由於使用fork建立的子程序被kill以後,父程序沒有kill時,用ps檢視就會顯示該子程序
為殭屍程序。
開始沒有設定signal(sigchld, sig_ign);
然後在程式裡用system(kill -s 9 ***) ***表示子程序號
執行之後發現子程序顯示為殭屍程序。
但是直接在後台執行 kill -s 9 ***
再次檢視程序就沒有殭屍程序產生。
signal(sigchld,sig_ign)和signal(sigcld,sig_ign)都可以使
核心在子程序結束時不會產生殭屍程序
殭屍程序的處理
在unix 系統中,乙個程序結束了,但是他的父程序沒有等待 呼叫wait waitpid 他,那麼他將變成乙個殭屍程序.在fork execve 過程中,假設子程序結束時父程序仍存在,而父程序fork 之前既沒安裝sigchld訊號處理函式呼叫 waitpid 等待子程序結束,又沒有顯式忽略該訊號,...
殭屍程序的處理
利用kill函式 利用sigchld訊號 kill函式可以向某個程序或者程序組傳送特定的訊號。include include intkill pid t pid,int sig include include include void fun int sig intmain getchar wait...
殭屍程序和處理方式
在父程式中用於判斷子程式是否結束 殭屍程序 子程序提前于父程序結束,造成無法清理掉pcb和其他系統消耗造成pid的長時間占用 如上圖 如果父程序異常結束時就成了乙個孤兒程序交個pid 1 的init作為父程序進行管理收屍 三種處理方式 父程序通過wait和waitpid等函式等待子程序結束,這會導致...