Linux入門 殭屍程序 的模擬實現

2021-08-19 15:13:04 字數 1182 閱讀 9197

殭屍程序的產生,危害,避免,及其模擬實現殭屍程序。

殭屍程序

當子程序退出,並且父程序沒有讀取到子程序的返回狀態碼,就會產生殭屍程序。
殭屍程序的產生原因

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 ...