1. 程式人生 > >python-殭屍程序和孤兒程序

python-殭屍程序和孤兒程序

孤兒程序:

#父程序在子程序還在執行前退出,最後會被init程序接管,init以父程序的身份處理子程序執行完畢後遺留狀態資訊


殭屍程序:
#一直建立子程序,不回收子程序執行完畢後的狀態資訊,從而導致大量的殭屍程序,不能產生新的程序



孤兒程序:一個父程序退出,而父程序還要多個子程序還在執行,那麼這麼子程序將成為孤兒程序。孤兒程序被init程序(程序號為1)所收養,並由init程序對它們完成狀態收集工作,init將會以父程序的身份對殭屍狀態的子程序進行處理。

任何一個子程序(init除外)在exit()之後,並非馬上就消失掉,而是留下一個稱為殭屍程序(Zombie)的資料結構,等待父程序處理。
如果父程序在子程序結束之前退出,則子程序將由init接管。init將會以父程序的身份對殭屍狀態的子程序進行處理。
"""
"""
殭屍程序:
一個程序使用fork建立子程序,如果子程序退出,而父程序並沒有呼叫wait或waitoid獲取子程序的狀態資訊,那麼子程序的程序描述符仍然儲存著系統中,這種程序稱為殭屍程序

如果程序不呼叫wait / waitpid的話, 那麼保留的那段資訊就不會釋放,其程序號就會一直被佔用,但是系統所能使用的程序號是有限的,如果大量的產生僵死程序,將因為沒有可用的程序號而導致系統不能產生新的程序. 此即為殭屍程序的危害,應當避免。