Chapter 9__进程关系

[size=large]
----------------------------------------------------------------------------------
ls /dev
tty :虚拟终端,我们可以打开多个终端窗口~
ttys:串口,早期使用“哑终端”登录,应该是类似使用串口设备那样。
哑终端:早期UNIX系统,使用硬连接 连到主机,进行登录
关于终端的文章:
[url]http://blog.csdn.net/force_eagle/archive/2009/07/18/4358942.aspx[/url]
----------------------------------------------------------------------------------

×进程间,有着一个族谱,但并非像人类需要X+Y诞生下一代。

----------------------------------------------------------------------------------
《进程组》

一个或多个 “进程” 的集合。获取进程的组ID:
pid_t getpgrp(void);
pid_t getpgrp(pid_t pid); //参数为0等同于上一个

组长进程,其组ID为自己的进程ID。
组长进程死亡后,其组下仍可生存其它进程,进程组与组长进程生命周期不同。

int setpgrp(void); /* System V version */
int setpgrp(pid_t pid, pid_t pgid); /* BSD version */

将指定进程pid,设为某组进程pgid一员。
进程只能为自己,或子进程设置进程组ID。
子进程调用exec函数族之一后,不能父进程不能再改变其进程组ID。

父进程为子进程设组ID,子进程自己也设置组ID。
由于父子进程的运行次序的不确定性:
如果父进程先运行,子进程未运行过,那么子进程的组ID为?不确定其身份。


消息可以发给一个进程,或一个进程组的所有进程。

----------------------------------------------------------------------------------
《会话》

会话,又是一个或多个 “进程组” 的集合,会话ID是其下的一个进程组长ID。

pid_t setsid(void);
pid_t getsid(pid_t pid);

如果调用setsid()的进程:
情况A:是一个进程组的组长,此函数返回出错。
故一般先调用fork,将父进程exit掉。
子进程虽然继承了进程组ID,但pid != gid,肯定不是组长。

情况B:
不是则会创建一个新会话:
1、该进程变为新进程组的组长进程
2、该进程变为新会话的首进程(session leader)
3、该进程没有控制终端。
如果调用setsid()前该进程有控制终端,那么这种联系也会被中断。

----------------------------------------------------------------------------------

《控制终端》
1、一个会话,可以有一个控制终端
2、建立与控制终端连接的会话首进程,被称为控制进程
3、一个会话中的几个进程组,会分为一个前台进程组,和若干后台进程组。
4、无论何时键入中断键(Ctrl+C),会将中断信号发送给前台进程组的所有进程。
5、无论何时键入退出键(Ctrl+\),会将中断信号发送给所有进程组的所有进程。
6、终端接口检测到调制解调器或网络断开,则将挂断信号发送给控制进程,即会话首进程。


----------------------------------------------------------------------------------
《作业控制》
----------------------------------------------------------------------------------

《shell执行程序》
xserver@vbox-pc:~$ ps -o pid,ppid,pgid,sid,comm,tpgid |cat
PID PPID PGID SID COMMAND TPGID
2008 1572 2008 2008 bash 2596
2596 2008 2596 2008 ps 2596
2597 2008 2596 2008 cat 2596


xserver@vbox-pc:~$ ps 1572
PID TTY STAT TIME COMMAND
1572 ? Sl 0:20 gnome-terminal

----------------------------------------------------------------------------------
《孤儿进程组》orpgan process

----------------------------------------------------------------------------------
终端登录:点对点连接
网络登录:非点对点
伪终端,以处理上面两种登录方式。
仿真串行终端的运行行为,并将终端操作映射为网络操作。
字符终端、图形终端
终端的波特率,终端速度
[/size]

你可能感兴趣的:(APUE)