c語言中的殭屍太及wait的作用

2021-07-13 16:17:57 字數 1204 閱讀 3314

殭屍態程序:   

子程序結束啦,按時沒有父程序收屍!

建立乙個殭屍態的子程序:

收屍---wait(null); //關心子程序的退出,進行子程序的收屍操作

殭屍態的程序中:

父程序是存在的,只是沒有做收屍操作而已!

但是此時子程序已經結束!

根據上述特點,建立乙個殭屍態的子程序,通過 ps aux | grep a.out

檢視殭屍態子程序

ubuntu    3909  0.0  0.0   1992   280 pts/1    s+   19:35   0:00 ./a.out--z

[1].程序的生命週期

(a).程序的建立 -- fork

(b).程序的執行 -- a.子程序中實現處理邏輯 b.呼叫exec函式族 實現 執行新程式

(c).程序的結束 -- exit _exit (return main)

兩種程序狀態

1).孤兒程序

特點:父程序結束了,但是子程序還存在,此時子程序被init程序收養

2).殭屍程序

特點:子程序結束了,但是父程序還存在,並且父程序沒有做任何收屍操作,導致子程序成為殭屍態的程序

收屍: **資源

殭屍態的程序占用哪些資源?

[1].pcb 程序占用的記憶體

pcb 描述了程序 資訊的

殭屍態程序是程序本身已經結束了但是對應的pcb還沒有釋放

"我是我" ---->"銷戶"

wait 函式:

pid_t wait(int *status);

pid_t waitpid(pid_t pid, int *status, int options);

程序的狀態改變:

(1),子程序結束

(2).子程序被暫停

(3).子程序被重新恢復

wait 函式: 是乙個阻塞的方式 會導致 呼叫程序 阻塞 ,直到 呼叫程序的子程序結束

waitpid();

@options

wnohang   //no hang   非阻塞的方式 等待子程序結束

wuntraced //r --> t   子程序從 執行態 到 t(stop)的狀態的改變

wcontinued//t --> r   子程序被恢復的狀態改變

@status   非null 則獲取程序的退出狀態資訊

exit();

c語言中的變數及常量

變數 char 字元型變數,長度為乙個位元組 short 短整形,長度為兩個位元組 int 整形變數,長度為四個位元組 定義整形變數時優先考慮使用int long 長整形變數,長度為四個位元組 long long 更長的整形變數,長度為八個位元組 float 單精度浮點數,長度為四個位元組 doub...

C語言中的 ,

c語言中的 今天在分析乙份原始碼的時候遇到了如下 define uf call x report file line x,x static int report char file,int line,char call,int irc return irc 網上參考 cpp view plain c...

C語言中的

c語言中的 今天在分析乙份原始碼的時候遇到了如下 覺得其中的 很有意思,於是就將這個知識點整理一下。和 都是預處理指令,我們先看 用來把引數轉換成字串,請看下面的兩個例子。例子一 例子二 define sqr x printf the square of x is d.n x x 如果這樣使用巨集 ...