僵死程序和孤兒程序的產生和處理

2021-09-11 11:03:23 字數 456 閱讀 4875

1、僵死程序的產生

子程序先於父程序結束,這是需要父程序最子程序的pcb進行釋放,如果父程序沒有對已經結束的子程序進行pcb釋放,那麼該子程序就一直處於僵死狀態,如果父程序執行一段時間也結束了,那還好辦,init程序會接收這個僵死的子程序對其pcb進行釋放,但是如果父程序一直迴圈,那麼子程序就一直處於僵死狀態。

2、僵死程序的處理方式

(1)將其父程序殺死,顯然這個不是很合理

(2)當子程序結束時便向其父程序傳送乙個sigchid訊號,父程序收到該訊號之後便呼叫wait或waitpid釋放子程序pid。

1、孤兒程序的產生

乙個父程序退出,而它的乙個或多個子程序還在執行,那麼這些子程序將成為孤兒程序。孤兒程序將被init程序收養,並由init程序對它們進行狀態收集工作。

2、孤兒程序的處理

由於孤兒程序已被init程序收養,那就相當於其有了乙個父程序,因此並不需要做特殊處理。

linux 中的僵死程序和孤兒程序

當我們使用建立程序的函式fork vfork 等,建立了子程序 1.子程序先於父親程序退出,會造成子程序的程序編號無法釋放.程序編號的範圍很大,但不應該隨意浪費 2.子程序後於父親程序退出,子程序會交給init 程序管理.3.乙個程序在執行完畢後,系統會自動清空其存在的程序的相關資源 結合上面說明,...

僵死程序與孤兒程序

1.僵死程序與孤兒程序 僵死程序 程序已經退出,但是沒有 核心 pcb 資源的程序叫僵死程序。孤兒程序 父親程序先於子程序退出後,這個子程序就是孤兒程序,父親程序會被轉移為 init pid 1 程序。僵死程序示例 include include include apue.h include voi...

Linux複習篇(五) 僵死程序和孤兒程序

概念 乙個父程序利用fork建立子程序,如果子程序先於父程序退出,而父程序收到核心發來的sigchld訊號,並沒有利用wait 或者 waitpid 來發出進行適當處理獲取子程序的狀態資訊 退出碼 子程序,那麼子程序的狀態描述符依然儲存在系統中,等待父程序收屍。危害 在linux程序的狀態中,殭屍程...