linux環境下fork 函式簡介

2021-10-10 13:45:03 字數 803 閱讀 4655

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函式執行完畢後,如果建立新程序成功,則出...