我的 Linux 进程有 4 个子进程。经过一段时间的执行后,所有子进程都被 init 进程采用。我们该如何预防这种情况呢? (僵尸进程不是这种情况)。
该过程是用C语言编写的,操作系统是Linux。我的代码调用 waitpid!可能是什么问题? 99,99%我们不会遇到这个问题。
最后更新:如果有人执行“kill -9”怎么办?这会立即终止父进程并使子进程成为孤儿。
最佳答案
如果您的进程被 init
重新设置父进程,则意味着它们的父进程已死亡。当进程的父进程死亡时,init
会采用它,以便在子进程(即 init
) 收到 SIGCHLD
。
如果您不希望 init
成为您子进程的父进程,则必须确保您的进程一直存在,直到您的所有子进程都已死亡并被您的程序收割。
关于c - 防止子进程成为孤儿进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6813257/