我有一个死进程,现在处于不存在状态,这意味着它的父进程没有读取其退出值。 (它不会读它)
我知道退出值存储在内核中供父进程读取的地方但是,如果我不是父进程,有没有办法让我读取该值?
理想情况下,我可以通过shell或crit / C / python / your-favorite-language程序来完成此操作。
[编辑]:这不是关于如何收获孩子或杀死孩子的问题。我不在乎它是否用完了进程表中的一个插槽。我只是想知道它的退出值是什么。即,我想在内核中读取task_struct-> exit_code。
马修
答案 0 :(得分:1)
您可以做的一件事是发送父SIGCHLD
,告诉它孩子已经死亡。如果该程序具有任何质量,它将收获该过程。
kill -s SIGCHLD parentpid
答案 1 :(得分:0)
没有。尝试为waitpid()
调用不属于调用进程子进程的进程将导致ECHILD
。您将需要终止父进程,导致子进程重新迁移到init
,然后将其收回。