一个进程在退出时立即停止(僵尸)(从信号,呼叫exit,从其返回main,等等).它一直保持僵尸,直到wait它的父母为止.
因此,所有进程在退出时至少会短暂成为僵尸.
如果父进程需要一点(因为它正在做其他工作,或者只是因为调度程序还没有给它CPU时间)wait,那么你会在调用之前看到僵尸.如果父母从不打电话wait,那么当它最终退出时,init(pid 1)将采用其僵尸的孩子,并呼吁wait他们.
只有在父进程尚未死亡且尚未等待的情况下,子进程才会失效(变成僵尸).如果原始父级死亡,则子级的父级将成为进程ID 1,并且该进程的主要任务是等待其(继承的)子级死亡并将其从进程列表中删除,以便它们不是僵尸.(注意:孤立的子节点或守护进程由PID 1自动继承;它不会被分配给进程层次结构中的祖父母或曾祖父母.)
该儿童死亡和父收集经由所述出口信息的时间之间wait()(或waitpid(),或waitid()或任何其他变体的),它是在进程列表僵尸,示出为defunct通过ps.
但要回答你的问题标题:
(如果其父母没有去世,它只能解散.)