子进程是否与其父进程一起死亡,是否有任何UNIX变体?
我已经研究Linux内核行为已经有一段时间了,对我来说很清楚: 当一个进程死亡时,所有的子进程都将返回该init进程(PID 1),直到最终死亡。 但是,最近,一个比我更了解内核的人告诉我: 当进程退出时,它的所有子进程也会死亡(除非您使用NOHUP这种情况,否则它们会返回init)。 现在,即使我不相信这一点,我仍然编写了一个简单的程序来确保这一点。我知道我不应该依赖时间(sleep)进行测试,因为这完全取决于流程调度,但是对于这种简单情况,我认为这已经足够了。 int main(void){ printf("Father process spawned (%d).\n", getpid()); sleep(5); if(fork() == 0){ printf("Child process spawned (%d => %d).\n", getppid(), getpid()); sleep(15); printf("Child process exiting (%d => %d).\n", getppid(), getpid()); exit(0); } sleep(5); printf(stdout, "Father process exiting (%d).\n", getpid()); return EXIT_SUCCESS; } 这是程序的输出,ps每次printf通话时都有相关的结果: $ ./test & …