僵尸進(jìn)程和孤兒進(jìn)程 什么是孤兒進(jìn)程,什么是僵尸進(jìn)程?
什么是孤兒進(jìn)程,什么是僵尸進(jìn)程?孤立進(jìn)程是指在父進(jìn)程執(zhí)行完成或終止后繼續(xù)運(yùn)行的進(jìn)程。這些完成生命周期但仍保留在流程表中的流程稱為“僵尸流程”。怎樣來清除僵尸進(jìn)程呢? 1. 重寫父進(jìn)程,并在子進(jìn)程死后為
什么是孤兒進(jìn)程,什么是僵尸進(jìn)程?
孤立進(jìn)程是指在父進(jìn)程執(zhí)行完成或終止后繼續(xù)運(yùn)行的進(jìn)程。這些完成生命周期但仍保留在流程表中的流程稱為“僵尸流程”。
怎樣來清除僵尸進(jìn)程呢?
1. 重寫父進(jìn)程,并在子進(jìn)程死后為其收集尸體。具體方法是接收sigchld信號。子進(jìn)程結(jié)束后,它將向父進(jìn)程發(fā)送sigchld信號。父進(jìn)程收到信號后,將執(zhí)行waitpid()函數(shù)為子進(jìn)程收集尸體。這是基于這樣的原理:即使父進(jìn)程不調(diào)用wait,內(nèi)核也會(huì)向它發(fā)送sigchld消息。雖然忽略了的默認(rèn)處理,但如果要響應(yīng)此消息,可以設(shè)置處理函數(shù)。終止父進(jìn)程。父進(jìn)程死亡后,zombie進(jìn)程將成為“孤立進(jìn)程”,并傳遞給1號進(jìn)程init。Init將始終負(fù)責(zé)清理僵尸進(jìn)程。它生成的所有僵尸進(jìn)程都將消失。