關於殭屍程序的深度解析

2021-08-06 00:27:32 字數 1317 閱讀 8909

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也不能殺死殭屍程序。補救辦法是殺死殭屍程序...