kill
不会杀死任何东西.它将信号发送到目标进程.SIGKILL
只是一个信号.现在,标准操作SIGKILL
- 实际上唯一的操作,因为SIGKILL
进程无法处理或忽略 - 是退出,这是真的.
在"<解散>"进程尚未孩子收获,这意味着父母已经不叫wait()
取回孩子的退出状态.在父母打电话之前wait()
,已经失效(或"僵尸")的过程会一直存在.
无论何时进程结束,无论结束如何(kill
或以其他方式),它都将保留在内核的进程表中,直到其父进程检索其退出状态(使用wait
和朋友).将它留在过程表中可以避免一些令人讨厌的竞争条件.
如果您的父进程已退出,则应重新分配子进程init
,这会定期收回其子进程.