fork()函式原型:pid_t fork(void);
需要引入的標頭檔案:
功能:①fork函式通過系統呼叫建立乙個與原來程序幾乎完全相同的程序,並且兩個新的程序將併發執行。
②若fork函式成功呼叫,一次會返回兩個值,子程序返回0,父程序返回子程序id(pid),若fork函式呼叫失敗,返回-1
相關函式:
(1)getpid
函式原型:pid_t getpid(void)
功能:返回當前程序的pid
(2)getppid
函式原型:pid_t getppid(void)
功能:返回父程序的標識
fork函式一次呼叫示例
#include
#include
intmain()
if(pid==0)
else
}
執行結果
我們可以看出if語句中的兩個條件本來只能是滿足哪個輸出哪個,但是這一次兩個if語句中的內容都輸出了,說明有兩次返回值,分別滿足兩個if的條件
ps:關於建立的兩個程序到底誰時父執行緒先執行,還是子執行緒先執行,我一直沒搞明白,可以看一部分參考資料
1,linux fork之後,到底是子程序先執行還是父程序先執行
2,os中關於父子程序的執行順序和多個子程序之間的執行順序
3,fork之後,父子程序的先後執行順序如何反映?
連續呼叫多次fork函式
Linux下的fork 函式
fork fork的英文翻譯是 分叉 同樣在linux中我們也可以理解為如果使用了fork 函式,程序也會 分叉 下面進行具體的說明fork 函式。定義 通過系統呼叫建立乙個與原程序幾乎完全相同的程序,其中新產生的程序成為子程序。原型 pid t fork void fid t相當於int型別特殊之...
Linux下fork函式的使用
fork函式每呼叫一次,函式返回兩次,新程序 子程序 中返回0,原程序 父程序 中返回子程序的pid。q 為什麼不是子程序中返回父程序pid,父程序中返回0呢?那是因為乙個父程序有很多子程序,如果不返回其特定子程序的pid,之後需要呼叫其子程序時就找不到這個子程序了 而乙個子程序只有乙個父程序,如果...
LINUX下fork 和kill函式
1 fork 函式 pid t fork void 返回值 fork僅僅被呼叫一次,卻能夠返回兩次,它可能有三種不同的返回值 1 在父程序中,fork返回新建立子程序的程序id 2 在子程序中,fork返回0 3 如果出現錯誤,fork返回乙個負值 在fork函式執行完畢後,如果建立新程序成功,則出...