當我們使用建立程序的函式fork(),vfork()等,建立了子程序
1.子程序先於父親程序退出,會造成子程序的程序編號無法釋放.(程序編號的範圍很大,但不應該隨意浪費)
2.子程序後於父親程序退出,子程序會交給init()程序管理.
3.乙個程序在執行完畢後,系統會自動清空其存在的程序的相關資源
結合上面說明,乙個僵死程序的例子.
#include #include int main()else if(p>0)
return 0;
}
我們建立的僵死程序後面還出現了乙個defunc(死人,殭屍)的標號
建立乙個孤兒程序
#include #include #include #include int main()else if(pid == 0)
}
你會發現第二次輸出的子程序已經交給init()程序託管了. Linux複習篇(五) 僵死程序和孤兒程序
概念 乙個父程序利用fork建立子程序,如果子程序先於父程序退出,而父程序收到核心發來的sigchld訊號,並沒有利用wait 或者 waitpid 來發出進行適當處理獲取子程序的狀態資訊 退出碼 子程序,那麼子程序的狀態描述符依然儲存在系統中,等待父程序收屍。危害 在linux程序的狀態中,殭屍程...
僵死程序和孤兒程序的產生和處理
1 僵死程序的產生 子程序先於父程序結束,這是需要父程序最子程序的pcb進行釋放,如果父程序沒有對已經結束的子程序進行pcb釋放,那麼該子程序就一直處於僵死狀態,如果父程序執行一段時間也結束了,那還好辦,init程序會接收這個僵死的子程序對其pcb進行釋放,但是如果父程序一直迴圈,那麼子程序就一直處...
Linux中僵死程序
僵死程序 殭屍程序 一 僵死程序產生的原因 用fork建立程序,子程序終止時,它與父程序之間還會保持聯絡,知道父程序也正常終止或者父程序呼叫 wait 才結束,所以程序表中子程序的表項不會立即釋放,因為它的退出碼還需要儲存起來,以備父程序 wait 呼叫的時候使用。子程序先於父程序結束,父程序沒有獲...