fork()系統呼叫簡單的來講就是建立乙個新的程序。
#include
pid_t pid = 0;
pid = fork();
switch (pid)
break;
case -1:
break;
default:
break;
}**這樣寫的原因在於fork()有乙個極其特別的特點:一次呼叫,兩次返回。
如果返回的pid<0,則說明fork fail了;
如果返回的pid=0,則說明這是從fork出來的child process中返回;
如果返回的pid>0,則說明這是從parent process中返回的,返回的pid即為child process的pid.。
那為什麼要在parent process中呼叫wait()系統呼叫呢?
parent process呼叫wait()系統呼叫的目的在於當child process結束時,parent process可以**child process的資源。
如果不呼叫wait(),當child process結束時,通過ps -a仍然可以找到該child process,
並且是處於狀態,也就是child process已經死掉,雖然其大部分資源已經釋放,
但是仍然占用著乙個程序描述符。
如果系統中有太多zombie process,那一定是有害的。
而且對於這種死掉的zombie process,kill -9 child_process_pid也無法將其殺死。
系統呼叫跟我學 4
系統呼叫跟我學 4 對linux不是太陌生的讀者都應該對shell有一定的了解,就是這個程式在我們登陸後自動執行,列印出乙個 符號,然後等待我們輸入命令。linux下最常用的shell應用程式是bash,絕大部分linux發行版預設安裝的都是它。下面我們也來親手編寫乙個shell程式,這個shell...
linux fork函式的精闢解說
開始演示 plain view plaincopyprint?root test code cat fork.c include include include main root test code gcc fork.c o fork root test code fork i am the ch...
linux fork函式的精闢解說
文章的名稱為 linux fork函式的精闢解說 開始演示 plain view plaincopyprint?root test code cat fork.c include include include main root test code gcc fork.c o fork root t...