如何在Linux上检测失效进程?

时间:2010-03-29 15:26:41

标签: c signals parent-child zombie-process

我有一个用C语言编写的父进程和子进程。在父进程中的某处,HUP信号被发送给子进程。我希望我的父进程检测孩子是否已经死亡。但是当我发送SIGHUP时,子进程变成了僵尸。如何在父进程中检测孩子是否是僵尸?我尝试下面的代码,但它没有返回我想要的结果,因为子进程仍在那里,但它已经不存在。

kill(childPID, 0);

还有一个问题;我可以杀死僵尸孩子而不杀死父母吗?

感谢。

1 个答案:

答案 0 :(得分:4)

from wikipedia

  

在Unix和类Unix计算机操作系统上,僵尸进程或已停止进程是一个已完成执行但仍在进程表中有一个条目的进程。仍然需要此条目以允许启动(现在是僵尸)进程的进程读取其退出状态。

如果父母通过调用wait,waitpid等来获取退出状态,则僵尸应该消失。

您可以通过等待函数检测进程是否处于活动状态(man wait)。