是否'&';在bash中导致僵尸进程?

是否'&';在bash中导致僵尸进程?,bash,process,fork,wait,zombie-process,Bash,Process,Fork,Wait,Zombie Process,一位同事坚持认为,在Bash脚本中使用&生成多个子进程后,我需要调用wait()。我认为问题在于,因为父进程在子进程退出之前就退出了,所以它们将成为孤立进程并处于僵化状态 我知道fork()需要wait()或waitpid()来正确删除它创建的文件描述符。然而,Bash真的需要这样做吗?这不是每个子进程运行的bash子shell都要处理的事情吗?在我自己的实验中,我无法重新创建这样一种情况:我创建的Bash子进程处于僵尸状态。父进程死亡的进程将被重新租给init,当它们退出时,最终将收获它们。导

一位同事坚持认为,在Bash脚本中使用
&
生成多个子进程后,我需要调用
wait()
。我认为问题在于,因为父进程在子进程退出之前就退出了,所以它们将成为孤立进程并处于僵化状态


我知道
fork()
需要
wait()
waitpid()
来正确删除它创建的文件描述符。然而,Bash真的需要这样做吗?这不是每个子进程运行的bash子shell都要处理的事情吗?在我自己的实验中,我无法重新创建这样一种情况:我创建的Bash子进程处于僵尸状态。

父进程死亡的进程将被重新租给
init
,当它们退出时,最终将收获它们。导致僵尸进程的原因是父进程保持活动状态,但由于某种原因从未抽出时间来获取子进程。

不是“
fork()
要求
wait()
waitpid()
正确删除它创建的文件描述符”。如果
fork()
创建了文件描述符(实际上它复制了它们),那么当子进程退出时,在它变成僵尸之前,它们就会关闭。