Linux下的fork 函式

2021-08-07 21:24:13 字數 894 閱讀 9857

fork(): 

fork的英文翻譯是「分叉」,同樣在linux中我們也可以理解為如果使用了fork()函式,程序也會「分叉」。下面進行具體的說明fork()函式。

定義:通過系統呼叫建立乙個與原程序幾乎完全相同的程序,其中新產生的程序成為子程序。

原型:

pid_t fork(void);//fid_t相當於int型別
特殊之處(「分叉」):函式只產生乙個程序;呼叫一次,返回兩次。

返回值:在新建立的程序(稱為子程序)中返回0;呼叫的fork原程序(稱為父程序)中返回新程序的pid;出錯返回負數。

孤兒程序:如果父程序結束,子程序未結束,則子程序就成為了孤兒程序,交由init處理,將其ppid設為1。

示例加深理解:

示例(1):

#include#includeint main()

}

分析以上**會輸出什麼?

綜上分析,結果就很明了了,終端最終輸出三個a,三個b。

示例(2):

#include#includeint main()

}

兩個程式只是微妙的變化,這次會輸出什麼?分析完我們看結果:

雖然變化不大,可結果卻大相徑庭,這次終端會輸出四個a,四個b。

通過兩個**及輸出結果相對比,我們要明白fork()在建立子程序時,會把父程序的文字段,緩衝區都會複製;同時也要結合printf從緩衝區重新整理到介面的條件分析問題。

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

linux環境下fork 函式簡介

fork 函式原型 pid t fork void 需要引入的標頭檔案 功能 fork函式通過系統呼叫建立乙個與原來程序幾乎完全相同的程序,並且兩個新的程序將併發執行。若fork函式成功呼叫,一次會返回兩個值,子程序返回0,父程序返回子程序id pid 若fork函式呼叫失敗,返回 1 相關函式 1...