【问题标题】:preventing child process becoming an orphan process防止子进程成为孤儿进程
【发布时间】:2011-10-12 09:33:39
【问题描述】:

我的 Linux 进程有 4 个子进程。在执行一段时间后,所有子进程都被 init 进程收养。我们如何预防这种情况? (僵尸进程不是这种情况)。

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

最后更新:如果有人执行“kill -9”怎么办?这会立即终止父进程并使子进程成为孤儿。

【问题讨论】:

  • 您的编辑不会改变答案。

标签: c linux process init


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您的进程正在由init 重新设置父进程,这意味着它们的父进程已经死亡。当一个进程的父进程死亡时,init 会采用它,以便当它(即init)收到SIGCHLD 时,它可以通过对子进程wait()ing 来收割僵尸。

    如果您不希望 init 成为您孩子的父母,您将必须确保您的进程一直存在,直到您的所有孩子都死了并被您的程序收割。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2014-01-08
        • 1970-01-01
        • 2014-12-06
        • 2020-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多