1
while(1)表示乙個程序還在進行,如果如果不加則表示程序已經結束,因為程序是乙個程式在執行過程的例項,因為a.out加上在終端上顯示完成後就表示已經結束了。如果在子程序上加上while(1),則表示程序子程序在進行中,而父程序結束,如果此時父程序沒有對孩子程序作任何處理的話,就變成我們所謂的殭屍程序。結束殭屍程序的辦法有許多種,比如說可以kill 孩子的pid,也可以killall a。out即關閉所有沒有結束的程序。如果殭屍程序沒有得到很好地處理,就會有很大問題,第一程序描述符也佔記憶體啊,
2while(1)在父程序的時候,另外有時候還有一種顯示defunct的時候。這時候while(1);然而此時子程序上有exit(0)的標誌,說明此時子程序已經退出。用ps-ef|grep a.out 抓一下你會發現defunc,除了用上面的方法也能解決。
當然你也可以用wait或waitpid來結束子程序。這兩個函式的用法你可以用man wait 在終端用其用法;
3就是while(1)在子程序和守護程序上都有,說實話這並沒有特殊的知識了,此時用ps-ef|grep a.out抓一下就會發現
有三個程序的pid,字父程序,還有乙個a.out就這麼多了,關於守護程序的原理思想下次我再給你們深度解析
#include
#include
#include
#include
#include
#include
#include
#include
#include
111
while(1)是程序還在進行,在子程序下面加上表示,表示子程序還在進行,父程序已經結束,此時如果父程序沒有對子程序進行處理的,那麼就會形成殭屍程序,用ps-ef|grep a.out 你就會發現defunct說明進入了殭屍狀態,上有,如果想結束這種狀態你可以用 kill命令來殺死孩子的pid或者killall a.out
}printf("等到返回的子程式程序描述符");
while (1)
return 0;
}int main10()
else
break;
}return 0;
}int main7()
return 0;
}
解析殭屍程序和孤兒程序
大家都知道linux中的程序分為多種狀態,例如 r running 執行狀態 s sleeping 睡眠狀態 淺度睡眠 d disk sleep 磁碟睡眠狀態 t stopped 停止程序 x dead 死亡狀態 z zombie 僵死狀態等等。僵死狀態是乙個比較特殊的狀態 當程序退出並且父程序 使...
殭屍程序與孤兒程序解析
我們都知道linux中的程序可以分有多種狀態 r runing 執行狀態 s sleeping 淺度睡眠狀態 d disk sleep 磁碟睡眠狀態 t stopped 停止程序 x dead 死亡狀態 z zombie 殭屍狀態 殭屍狀態 1 殭屍狀態是乙個比較特殊的狀態,當程序退出父程序 使用w...
Linux殭屍程序詳細解析
from 在fork execve 過程中,假設子程序結束時父程序仍存在,而父程序fork 之前既沒安裝sigchld訊號處理函式呼叫waitpid 等待子程序結束,又沒有顯式忽略該訊號,則子程序成為殭屍程序,無法正常結束,此時即使是root身份kill 9也不能殺死殭屍程序。補救辦法是殺死殭屍程序...