僵尸进程无法杀死

use*_*707 9 c linux zombie-process

有没有办法杀死僵尸进程?我试过要求exit杀死进程甚至向进程发送SIGINT信号,但似乎没有什么可以杀死它.我正在为Linux编程.

nin*_*alj 11

僵尸进程已经死了,所以它们不能被杀死,它们只能被收获,这必须通过它们的父进程来完成wait*().这通常称为child reaper习语,在信号处理程序中SIGCHLD:

while (wait*(... WNOHANG ...)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 我在这个答案中使用了`zombie`,`dead`,`killed`和`child reaper` :) (17认同)
  • 您还可以让父进程通过`signal(SIGCHLD,SIG_IGN)`忽略子状态.儿童进程一离开就会消失(不留下僵尸),因为父母对其子女的健康状况缺乏兴趣. (10认同)