孤儿进程组

孤儿进程组:该进程组中每一个进程的父进程要么在该进程组,要么属于另一个session.

怎样创建孤儿进程组?

fork()后,子进程继承父进程的gid,然后父进程退出,那么子进程变成了孤儿进程,其所在的进程组也变成了孤儿进程组。

特性1:父进程终止后,进程组成为了孤儿进程组。那么如果新的孤儿进程组中有处于停止(stopped)状态的进程,则每一个进程都会收到挂断(SIGHUP)信号,接着又收到继续(SIGCONT)信号。

也就是说,进程组成为孤儿进程组后,孤儿进程组中的状态为stopped的进程会被激活。前提是需要对SIGHUP信号自处理,对挂断信号系统默认的动作是终止进程。

特性2:孤儿进程组是后台进程组,且没有控制终端

特性3:孤儿进程组去读控制终端时,read返回出错并将errno设置为EIO。

只有前台作业能接收终端输入,如果后台作业试图读终端,那么这并不是一个错误,但是终端驱动程序将检测到这种情况,并且向后台作业发送一个特定的信号SIGTTIN。该信号通常会暂时停止此后台作业。由于孤儿进程组是后台进程组,如果内核用SIGTTIN信号停止它,那么进程组中的进程就再也不会继续了

孤儿进程组

孤儿进程与孤儿进程组

 

 
喜欢 0
分享