僵尸进程如何成为init的子进程?难道 init 不应该在它的所有 child 上等待 waitpid 吗?
我偶尔会遇到父级为 init 的僵尸进程。该理论说,当进程死亡时,它会保持僵尸状态,直到它的父 wait 或 waitpid 在它上面。如果父进程已死,则进程会被 init 采用并进行等待。
我现在正在看这样的过程。我用 strace 附加到 init。我确实看到 init 偶尔醒来并且 waitpid 在其子进程上。但是我确实看到它跳过了它的僵尸 child 。我想知道这怎么可能。有什么想法吗?
最佳答案
我们可以对 waitpid() 有不同的实现。 如果内核以忽略僵尸线程的方式设计,那么 init 可能会跳过其僵尸线程并在后期清理其数据结构。
更多细节可以引用waitpid()的man page
关于linux - init 的僵尸 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29346109/