殭屍程序的產生,危害,避免,及其模擬實現殭屍程序。
殭屍程序
當子程序退出,並且父程序沒有讀取到子程序的返回狀態碼,就會產生殭屍程序。
殭屍程序的產生原因
a. 子程序結束後向父程序發出sigchld訊號,父程序預設忽略了它
b. 父程序沒有呼叫wait()或waitpid()函式來等待子程序的結束
c. 網路原因有時會引起殭屍程序;
殭屍程序的危害
殭屍狀態(z)不退出則需要一種用資料維護(屬於程序的基本資訊).
父程序建立多個子程序不**會造成記憶體資源的浪費。
殭屍程序的避免
(1) 讓殭屍程序成為孤兒程序,由init程序**;(手動殺死父程序)
(2) 呼叫fork()兩次;
(3) 捕捉sigchld訊號,並在訊號處理函式中呼叫wait函式;
模擬實現殭屍程序
1 //jiangshi jincheng
2#include
3#include
4#include56
int main()
7 14else
if(id>0)
15
19else
24return
0; 25 }
執行結果
另外乙個埠監視結果
//監視**
模擬實現殭屍程序
當程序退出並且父程序沒有讀取到子程序退出返回的 時就會產生殭屍程序。乙個程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的銷毀,而是留下乙個稱為殭屍程序 zombie 的資料結構 系統呼叫exit,它的作用是 使程序退出,但也僅僅限於將乙個正常的程序變成乙個殭屍程序,並不能將其完全銷毀 ...
Linux 模擬實現殭屍程序和孤兒程序
我們先了解一下程序都有哪幾種狀態。kernel源 裡定義了程序的如下狀態 r 執行狀態 running 表明程序要麼是在執行中要麼是在執行佇列裡。s 睡眠狀態 sleeping 意味著程序在等待事件完成,有時叫做可中斷睡眠。d磁碟休眠狀態 disk sleep 不可中斷睡眠狀態,在這個狀態程序通常會...
Linux 模擬實現殭屍程序和孤兒程序
殭屍程序 z zombie 子程序退出,父程序還在執行,但父程序沒有讀取子程序狀態,子程序進入z狀態。1 include 2 include 3 include 4 include 5 6 using namespace std 7 8 int main 9 14 if id 0 22 23 24 ...