kap*_*dit 2 linux posix signals zombie-process waitpid
我没有在我的代码中处理SIGCHLD.终止后,我的流程仍然立即删除.我希望它成为僵尸进程.如果我将SIGCHLD设置为SIGDFT那么,它是否行得通呢?我如何将SIGCHLD设置为SIGDFT?我希望进程变成僵尸,所以我可以在waitpid之后读取父进程中的子状态.
从您的问题历史来看,您似乎将自己与此结合在一起.以下是有关其工作原理的概述:
SIGCHLD的默认处置是忽略.换句话说,如果您什么也不做,信号将被忽略,但僵尸存在于进程表中.这就是为什么你可以wait在孩子死后随时随地使用它.
如果你设置了一个信号处理程序,那么信号就会被传递出来,你可以在适当的时候收获它,但是(前)的孩子在它死亡和收获它之间仍然是一个僵尸.
如果您手动将SIGCHLD的处置设置为SIG_IGN,signal则语义与第1项中的语义稍有不同.当您手动设置此处置时,操作系统会立即将子进程从进程表中删除,并且不会创建僵尸.因此,不再有任何状态信息可以收获,并且wait将无法使用ECHILD.(2.6.9之后的Linux内核坚持这种行为.)
| 归档时间: |
|
| 查看次数: |
5653 次 |
| 最近记录: |