当一个父进程被"kill -9"杀死时,子进程也会被杀死吗?

abl*_*lmf 22 linux signals kill process

我的一位同事今天早上告诉我,当他以"杀死-9" 杀死监督时,监督的子过程没有被杀死.

他对此非常肯定,但我多次尝试并没有发现这种情况.

因此当父进程被"kill -9"杀死时,linux会确保它的子进程也被杀死了吗?

caf*_*caf 23

不,当父母被杀时,子进程不一定被杀死.

但是,如果子进程正在写入并且父进程正在读取,则当下一次尝试写入管道时,它将获得一个SIGPIPE,默认操作是将其删除.这通常是在实践中发生的事情.


drA*_*erT 17

你必须使子进程守护进程,以便在父亲被杀死(或死亡)时杀死它们,否则它们被init(1)采用.

  • 守护进程,父亲,父进程,子进程和僵尸进程.计算机讲述了一个有趣而异想天开的故事. (5认同)

小智 8

在UNIX上,父进程和子进程的生命周期之间没有强制关系.严格地说,进程只有在调用exit()或接收未处理的信号时才会终止,默认操作将终止.

但是,当用户点击终端上的ctrl-C,ctrl- \等时, "控制终端"中的整个"前台进程组"可以接收SIGINT和SIGQUIT等信号.具体行为部分由登录shell实现(在tty驱动程序的帮助下).细节可能相当复杂:看这里这里