僵死狀態(zombies)是乙個比較特殊的狀態。
當程序退出並且父程序沒有讀取到子程序退出的返回**時就會產生殭屍程序。殭屍程序會以終止狀態保持在程序表中,並且會一直在等待父程序讀取退出狀態**。所以,只要子程序退出,父程序還在執行,但父程序沒有讀取子程序狀態,子程序進入z狀態
在子程序終止後到父程序呼叫wait()前的時間裡,子程序被稱為zombie;
a. 子程序結束後向父程序發出sigchld訊號,父程序預設忽略了它
b. 父程序沒有呼叫wait()或waitpid()函式來等待子程序的結束
c. 網路原因有時會引起殭屍程序;
2) 呼叫fork()兩次;
3) 捕捉sigchld訊號,並在訊號處理函式中呼叫wait函式;
mysql殭屍程序 殭屍程序產生原因和解決方法
在linux系統中,當用ps命令觀察程序的執行狀態時,經常看到某些程序的狀態列為defunct,這就是所謂的 殭屍 程序。殭屍 程序是乙個早已死亡的程序,但在程序表 processs table 中仍佔了乙個位置 slot 由於程序表的容量是有限的,所以,defunct程序不僅占用系統的記憶體資源,...
殭屍程序 孤兒程序 解決方案
我們有這樣乙個問題 孤兒程序和殭屍程序,怎麼產生的?有什麼危害?怎麼去預防?下面是針對此問題的總結與概括。正常情況下 子程序由父程序建立,子程序再建立新的程序。父子程序是乙個非同步過程,父程序永遠無法 子程序的結束,所以,當子程序結束後,它的父程序會呼叫wait 或waitpid 取得子程序的終止狀...
殭屍程序產生原因和解決方法
在linux系統中,當用ps命令觀察程序的執行狀態時,經常看到某些程序的狀態列為defunct,這就是所謂的 殭屍 程序。殭屍 程序是乙個早已死亡的程序,但在程序表 processs table 中仍佔了乙個位置 slot 由於程序表的容量是有限的,所以,defunct程序不僅占用系統的記憶體資源,...