【问题标题】:Parent process does not catch all his child processes父进程没有捕获他所有的子进程
【发布时间】:2010-11-18 07:16:34
【问题描述】:

我有以下问题:

我有主(父)进程,它使用 fork 函数创建另一个进程(子进程)。我正在捕捉孩子的状态以消除僵尸。当有 1 个子进程时,它被正确捕获,但是当父进程创建的进程(aprx. 30)更多时,有 aprx.剩下 4 个僵尸 = 父级没有捕获所有子级(返回状态/状态 = )。

使用

捕获子状态
void selfkill(int status) {
    wait(&status);
}

signal(SIGCHLD, selfkill);

提前致谢。

【问题讨论】:

    标签: c++ c process fork zombie-process


    【解决方案1】:

    您可能应该在信号处理程序内的循环中使用 waitpid() 和 WNOHANG。

    可能会发生的情况是,并非所有信号都已传递 - 因为其中一些信号彼此距离太近。您也可以使用sigaction() 而不是signal() 来缓解这个问题。

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 2012-10-02
      • 1970-01-01
      • 2020-10-18
      • 2017-12-29
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      相关资源
      最近更新 更多