首先,設定sigchld的handler為sig_ign能否避免殭屍程序呢?
man signal,有以下解釋:
避免殭屍程序通常有以下3種方法:
1. fork兩次,使得孫子程序的父親為init,孫子程序去執行job
(init程序只要檢測有子程序終止就會呼叫wait或waitpid釋放資源,防止殭屍程序。)
2. 制定自己的sigchld訊號處理函式,在這個訊號處理函式中呼叫wait()
3. 通過sigaction系統呼叫指定訊號sigchld處理動作中的sa_flags為sa_nocldwait
linux中的。 殭屍 程序
殭屍 程序是乙個早已死亡的程序,但在程序表 processs table 中仍佔了乙個位置 slot 由於程序表的容量是有限的,所以,defunct程序不僅占用系統的記憶體資源,影響系統的效能,而且如果其數目太多,還會導致系統癱瘓,以下是乙個無限建立子程序的程式 i nclude i nclude ...
Linux 中的殭屍程序與孤兒程序
在介紹殭屍程序和孤兒程序之前我們先了解一下程序的幾種狀態 程序狀態 1.r狀態 程序要麼在執行要麼在執行佇列中。2.s狀態 睡眠狀態,程序在等待某事件完成 可被中斷 3.d狀態 不可中斷的睡眠狀態 通常其在第等待io結的束 4.t狀態 被停止的程序 傳送訊號sigstop停止程序 sigcont讓程...
Linux 殭屍程序
怎樣產生殭屍程序的 乙個程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的被銷毀,而是留下乙個稱為殭屍程序 zombie 的資料結構 系統呼叫 exit,它的作用是使程序退出,但也僅僅限於將乙個正常的程序變成乙個殭屍程序,並不能將其完全銷毀 在linux程序的狀態中,殭屍程序是非常特殊的...