孤兒程序組:該程序組中每乙個程序的父程序都屬於另乙個session.
怎樣建立孤兒程序組?
fork()後,子程序繼承父程序的gid,然後父程序退出,那麼子程序變成了孤兒程序,其所在的程序組也變成了孤兒程序組。
特性1:父程序終止後,程序組成為了孤兒程序組。那麼新的孤兒程序組中處於停止(stopped)狀態的每乙個程序都會收到結束通話(sighup)訊號,接著又收到繼續(sigcont)訊號。
也就是說,程序組成為孤兒程序組後,孤兒程序組中的狀態為stopped的程序會被啟用。前提是需要對sighup訊號自處理,對結束通話訊號系統預設的動作是終止程序。
特性2:孤兒程序組是後台程序組,且沒有控制終端
特性3:孤兒程序組去讀控制終端時,read返回出錯並將errno設定為eio。
只有前台作業能接收終端輸入,如果後台作業試圖讀終端,那麼這並不是乙個錯誤,但是終端驅動程式將檢測到這種情況,並且向後台作業傳送乙個特定的訊號sigttin。該訊號通常會暫時停止此後台作業。由於孤兒程序組是後台程序組,如果核心用sigttin訊號停止它,那麼程序組中的程序就再也不會繼續了。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include9 #include 10 #include 11 #include 12
13static
void sig_hup(int
signo)
1417
18static
void pr_ids(char*name)
1923
24int main(void)25
36else
if (pid > 0)37
42else
4353 printf("
c=%d\n
",c);54}
55 }
孤兒程序 孤兒程序組 守護程序
1.孤兒程序的定義 定義1 該程序組的每個成員的父程序要麼是該組的成員,要麼在其它會話中。定義2 乙個程序不是孤兒程序組的條件是 該組有乙個程序,其父程序在屬於同一會話的另乙個組中。只要能夠滿足上面其中的任乙個定義,則此程序組就是孤兒程序組。可能讀起來比較拗口,看圖 1 中的例子可能會清楚點。圖 1...
孤兒程序組
孤兒程序組定義為 該組中每個成員的父程序要麼是該組的乙個成員,要麼不是該組所屬會話的成員。如果某個程序終止,使得某個程序組成為孤兒程序組的話,系統會向孤兒程序組裡面每個處於停止狀態程序傳送乙個sighup訊號,然後傳送sigcont訊號。include include include include...
會話 前台程序組 後台程序組 孤兒程序等相關概念
終端登入 當系統自舉時,核心建立id為1 的程序,也就是 init 程序,init 程序系統進入多使用者狀態。init程序讀取 etc inittab 對每乙個允許登入的終端裝置,init 呼叫一次 fork 它所生成的子程序執行 exec getty 程式。getty為終端裝置呼叫 open 函式...