【问题标题】:How to detect defunct processes on Linux?如何在 Linux 上检测已失效的进程?
【发布时间】:2010-03-29 15:26:41
【问题描述】:

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

kill(childPID, 0);

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

谢谢。

【问题讨论】:

    标签: c signals parent-child zombie-process


    【解决方案1】:

    from wikipedia:

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

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

    你可以通过等待函数(man wait)来检测一个进程是否存活。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多