linux之殭屍程序 孤兒程序

2021-07-31 03:39:33 字數 1446 閱讀 4350

殭屍程序即為程序已經執行完畢,但是其父程序沒有呼叫wait/waitpid,則該程序將變成乙個殭屍程序,雖然沒有執行,但占用系統中的乙個pcb空間。殭屍程序多的話,可以將系統卡死。

殭屍程序的實現為:使用folk建立乙個子程序,讓子程序進來之後很快就退出,父程序什麼也不做,即沒有呼叫wait/waitpid,所以該子程序就成為了乙個殭屍程序。

int main()

else

sleep(1000);

return

0;}

然後我們可以用ps -ef檢視是否有殭屍程序存在。

在另乙個終端使用ps -ef檢視。defunct為殭屍程序的標誌。

殭屍程序的結束方法:

1.>ps -aux:然後在裡面找

2.>ps -a | grep defunct:直接顯示殭屍程序

發現系統中有乙個zombie的殭屍程序。

再檢視就是程序的uid,pid等資訊。

$ ps -ef | grep defunct | more

最後使用kill -9 ppid殺死殭屍程序的父程序,將殭屍程序變為乙個孤兒程序,被init程序接收,然後被init程序處理掉。

ok,殭屍程序順利被殺死。

int main()

else

return

0;}

我們在用folk建立出乙個子程序後,就讓父程序退出,此時只留下乙個還在執行的子程序,不停的列印自己的pid和ppid,他就是孤兒程序。

我們可以發現這個子程序的ppid為1,即表示這個子程序的父程序為1號程序,也就是init程序。表示:當建立出來的這個孤兒程序程式設計孤兒程序後,就有init程序「領養」。

孤兒程序 殭屍程序

殭屍程序和孤兒程序 殭屍程序 殭屍程序是乙個比較特殊的狀態,當程序退出並且父程序沒有讀取到子程序的退出碼,就會產生殭屍程序,殭屍程序會一直儲存在程序表中,並且一直等待父程序讀取退出狀態碼。所以,只要子程序退出,父程序還在執行,但是父程序沒有讀取到子程序的狀態,子程序就會進入殭屍狀態。建立乙個殭屍程序...

殭屍程序, 孤兒程序

一,定義 當程序退出並且父程序 使用wait 系統呼叫 沒有讀取到子程序退出的返回 時就會產生殭屍程序。殭屍程序會以終止狀態保持在程序表中,並且會一直在等待父程序讀取退出狀態 簡單來說就是,在父程序中有乙個子程序,該子程序完成父程序交給的任務,子程序完成後會給父程序乙個任務結果返回,但父程序一直沒有...

殭屍程序 孤兒程序

程序在之前分為3個狀態 1.執行狀態 running 正在cpu中執行的程序。2.就緒狀態 ready 已獲得除了處理器外的所需資源,隨時準備著執行的程序。3.阻塞狀態 blocked 因為缺少除了cpu外的其他資源,無法滿足執行條件的程序。殭屍程序 乙個程序使用fork建立子程序,如果子程序退出,...