我們知道在unix/linux中混蔼,正常情況下过蹂,子進(jìn)程是通過父進(jìn)程創(chuàng)建的彬祖,子進(jìn)程在創(chuàng)建新的進(jìn)程诚镰。子進(jìn)程的結(jié)束和父進(jìn)程的運(yùn)行是一個(gè)異步過程,即父進(jìn)程永遠(yuǎn)無法預(yù)測(cè)子進(jìn)程 到底什么時(shí)候結(jié)束借笙。 當(dāng)一個(gè) 進(jìn)程完成它的工作終止之后俺泣,它的父進(jìn)程需要調(diào)用wait()或者waitpid()系統(tǒng)調(diào)用取得子進(jìn)程的終止?fàn)顟B(tài)疗认。
孤兒進(jìn)程:一個(gè)父進(jìn)程退出,而它的一個(gè)或多個(gè)子進(jìn)程還在運(yùn)行伏钠,那么那些子進(jìn)程將成為孤兒進(jìn)程横漏。孤兒進(jìn)程將被init進(jìn)程(進(jìn)程號(hào)為1)所收養(yǎng),并由init進(jìn)程對(duì)它們完成狀態(tài)收集工作熟掂。
僵尸進(jìn)程:一個(gè)進(jìn)程使用fork創(chuàng)建子進(jìn)程缎浇,如果子進(jìn)程退出,而父進(jìn)程并沒有調(diào)用wait或waitpid獲取子進(jìn)程的狀態(tài)信息赴肚,那么子進(jìn)程的進(jìn)程描述符仍然保存在系統(tǒng)中素跺。這種進(jìn)程稱之為僵尸進(jìn)程鹏秋。