假设我在以下程序中
for(i=0; i<3; i++)
pid = fork();
现在假设突出显示的流程被终止,第一个父流程将最终成为其他两个流程和祖父母的父流程>链中的最后处理?
答案 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的答案对此有更详细的说明。