'&'在bash中导致Zombie进程?

时间:2014-03-18 02:50:42

标签: bash process fork wait zombie-process

一位同事坚持认为我需要在使用Bash脚本中的wait()生成多个子进程后调用&。我相信关注的是,由于父进程在子进程之前就已经退出,它们将成为孤儿并留在僵尸状态。

我了解fork()需要wait()waitpid()才能正确删除它创建的文件描述符。但是,这真的需要Bash吗?这不是每个子进程运行的bash子shell负责吗?在我自己的实验中,我无法重新创建一个我创建的Bash子进程处于僵尸状态的情况。

1 个答案:

答案 0 :(得分:2)

父母死亡的过程被重新归结为init,当他们退出时最终会收获它们。导致僵尸进程的原因是当父进程继续生存时,但由于某种原因永远无法收获孩子。