如果父进程终止,子进程的祖父母进程是否成为其父进程?

时间:2018-10-13 19:05:16

标签: process fork

假设我在以下程序中

 for(i=0; i<3; i++)
 pid = fork();

我的理解是,一旦for循环迭代,将创建8个进程。 Processess

现在假设突出显示的流程被终止,第一个父流程将最终成为其他两个流程和祖父母的父流程>链中的最后处理

1 个答案:

答案 0 :(得分:0)

不,一个流程不会成为其子项或子项的父项。

父进程终止后,已故父进程的子进程立即成为系统指定进程的子进程。

传统上,系统指定的过程是单个系统范围的过程,称为init。该流程的职责之一是在孤立流程最终终止时“收获”(收集其孤立状态)。传统上,该init进程的进程ID等于1。

但是,在过去的几年中,除了原始PID = 1 init之外,或者代替原始PID = 1 init,具有多个init进程已变得很普遍。例如,在容器或用户登录会话中运行的进程可能被赋予了自己专用的while counter < num_passwords_user: username_input = str(input("Enter username for the database: ")) password_input = str(input("Please enter your password for the database: ")) database =username_input ,password_input 进程。因此,在现代系统上,您的孤立子进程可能以不为1的父PID结束。

https://unix.stackexchange.com/a/177361/18253的答案对此有更详细的说明。