2

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

kill(childPID, 0);

还有一个问题; 我可以在不杀死父母的情况下杀死僵尸孩子吗?

谢谢。

4

1 回答 1

4

来自维基百科

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

如果父进程通过调用 wait、waitpid 等方法获取退出状态,则僵尸应该消失。

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

于 2010-03-29T15:32:54.163 回答