防止儿童过程成为一个孤儿过程

时间:2011-07-25 08:09:50

标签: c linux process init

我的Linux进程有4个孩子。在执行一段时间之后,init进程采用了所有子进程。我们如何防止这种情况? (Zombie流程不是这种情况)。

该过程用C语言编写,操作系统是Linux。我的代码调用waitpid!可能是什么问题?在99,99%我们没有这个问题。

上次更新:如果有人执行“kill -9”怎么办?这会立即终止父进程并离开子进程孤儿。

3 个答案:

答案 0 :(得分:3)

如果您的进程由init重新分配,则表示其父进程已经死亡。当一个进程的父级死亡时,init会采用它,以便当它(即wait())收到init时,SIGCHLD可以通过init收获僵尸。

如果您不希望{{1}}成为您孩子的父母,您必须确保您的过程一直存在,直到您的所有孩子都已经死亡并被您的计划收回。

答案 1 :(得分:1)

等待孩子退出,然后退出。有关详细信息,请参阅wait(2)手册页。

答案 2 :(得分:0)

在主页上检查您的waitpid API参数,并确保在所有子进程完成之前您的父进程不应该结束。 你能在这里发布你的代码吗?