如果父程序fork了乙個子程序,父程序先於子程序終止,子程序的父程序將改為init程序。其大致操作是:在乙個程序終止時,核心諸葛檢查所有活動程序,以判斷它是否是正要終止程序的子程序,如果是,則該程序的父程序id就更改為1。
核心為每個終止子程序儲存了一定量的資訊,當終止程序的父程序通過wait或waitpid時,可以獲得這些資訊。
核心可釋放終止程序所使用的所有儲存區,關閉所有開啟檔案。
在unix術語中,乙個已經終止、但是其父程序尚未對其進行善後處理的程序被稱為僵死程序(zombie)。
init程序被編寫成無論何時只要有乙個子程序退出,就呼叫給乙個wait函式取得其終止狀態。
《unix高階環境程式設計》程序環境 程序終止
當核心執行c程式時 使用乙個exec函式執行 在呼叫mian函式前先呼叫乙個特殊的啟動例程。可執行程式檔案將此啟動例程指定為程式的起始位址。下面是c程式啟動和終止的流程,由圖中可以知道,程序的終止根據不同的函式呼叫是不一樣的,其中 exit和 exit函式是終止程序直接進入核心,exit函式則先執行...
unix環境高階程式設計 守護程序
守護程序 daemon 是生存期長的一種程序,常常在系統引導裝入時啟動,僅在系統關閉時終止,因為它們沒有控制終端,unix有很多守護程序,它們執行日常事務活動。守護程序的特徵 執行指令 ps zxj a顯示其他使用者擁有的程序狀態,x顯示沒有終端控制的程序狀態,j顯示與作業有關的資訊 會話id 程序...
UNIX環境高階程式設計 守護程序
守護程序也稱精靈程序,是生存期較長的一種程序。它們通常在系統自舉時啟動,僅在系統關閉時才終止。因為它們沒有控制終端,所以它們都是在後台執行的。各標題意義 父程序id,程序id,程序組id,會話id,終端名稱,終端程序組id,使用者id 系統程序依賴於作業系統實現。父程序id為0的各程序通常是核心程序...