殭屍態程序:
子程序結束啦,按時沒有父程序收屍!
建立乙個殭屍態的子程序:
收屍---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 如果這樣使用巨集 ...