0

我有一个死进程,现在处于失效状态,这意味着它的父进程还没有读取它的退出值。(它不会读它)

我知道退出值存储在内核中的某个位置供父进程读取,但是,如果我不是父进程,有没有办法读取该值?

理想情况下,我可以从 shell 或 abritrary C/python/your-favorite-language 程序执行此操作。

[编辑]:这不是关于如何收割或杀死孩子的问题。我不在乎它是否用完进程表中的一个槽。我只想知道它的退出值是多少。即,我想阅读内核中的task_struct->exit_code。

马修

4

2 回答 2

1

您可能可以做的一件事是发送 parent SIGCHLD,告诉它一个孩子已经死了。如果该程序具有任何质量,它将获得该过程。

kill -s SIGCHLD parentpid
于 2012-07-05T14:58:47.240 回答
0

不会。尝试调用waitpid()不是调用进程的子进程之一的进程将导致ECHILD. 您将需要杀死父进程,导致子进程重新成为init,随后将获得它。

于 2012-07-05T14:56:53.073 回答