我在某处读到(忘记在哪里),僵尸进程继续消耗进程表条目(具体是进程标识符或 PID),并导致资源泄漏。
僵尸进程不使用 cpu,也不使用内存(除了其进程表条目),这是正确的吗?这是僵尸进程仍然占用的所有资源吗?
使用的资源可以成为删除僵尸进程的理由吗?
是否需要删除僵尸进程?
答案1
wait(2)
僵尸进程是在没有其父进程的情况下终止(正常或异常)的进程。它不消耗资源(除了 PID),因为它已经死了。 维基百科对这一切有一个合理的解释。
答案2
系统使用有限数量的 PID(我认为是 2^16)。如果所有PID槽都被占用,系统将无法创建新进程。这就是你应该小心收割僵尸的原因,特别是如果你的程序创建了很多进程(例如,如果你是分叉服务器)。