Kill - 它会立即终止进程吗? https://stackoverflow.com/questions/8468866/kill-does-it-kill-the-process-right-away
我找到了答案,并设置了一个信号处理程序SIGCHLD
并介绍了wait
在那个处理程序中。这样,每当父进程kill
如果是子进程,则调用此处理程序并调用wait
to reap孩子。 - 动机是清除进程表条目。
我仍然看到一些子进程持续了几秒钟,即使其父进程没有死亡。 - 这怎么样可能的?
我通过看到这个ps
。恰恰ps -o user,pid,ppid,command -ax
并查找父进程、子进程和已失效的进程。
进程在退出后立即失效(僵尸)(从信号中调用exit
,返回自main
, 任何)。它会一直保持僵尸状态,直到wait
由其父级继续。
因此,所有进程在退出时至少会短暂地变成僵尸。
如果父进程在调用之前需要一些时间(因为它正在做其他工作,或者只是因为调度程序还没有给它CPU时间)wait
,然后你会看到僵尸一会儿。如果家长从来不打电话wait
,然后当它最终退出时,init
(pid 1) 将收养其僵尸孩子,并调用wait
在他们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)