linux fork系統呼叫的學習

2021-06-18 04:45:12 字數 764 閱讀 8979

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