程序建立函式fork與vfork

2021-07-25 08:23:01 字數 1193 閱讀 6282

1.fork:

(1)函式的功能 :建立乙個程序

(2)函式的原型:pid_t fork(void);

(3)函式的返回值:      < 0      出錯

=0      子程序

>0       父程序(其值為子程序的識別號)

(4)標頭檔案:#include

fork的奇妙之處在於它被呼叫一次,卻返回兩次,它可能有三種不同的返回值。

#include

#include

int main()

在pid=fork()之前,只有乙個程序在執行,但在這條語句執行之後,就變成兩個程序在執行了,這兩個程序的共享**

段,將要執行的下一條語句都是if(pid==0)。

兩個程序中,原來就存在的那個程序被稱作「父程序」,新出現的那個程序被稱作「子程序」,父子程序的區別在於程序

識別符號(pid)不同。

下面看這段**:

#include

#include

int main(void)

上面會列印兩次count 的值,且count 的值相同,都是1。

count++被父程序、子程序一共執行了兩次,為什麼count的第二次輸出為什麼不為2?

這是因為子程序的資料空間、堆疊空間都會從父程序得到乙個拷貝,而不是共享。在子程序中對count進行加1的操

作,並沒有影響到父程序中的count值,父程序中的count值仍

然為0。

2.vofrk:

(1)函式的功能 :建立乙個程序

(2)函式的原型:pid_t fork(void);

(3)函式的返回值:      < 0      出錯

=0      子程序

>0       父程序(其值為子程序的識別號)

(4)標頭檔案:#include

#include

下面我們再看這段**:

#include

#include

int main(void)

其結果也是列印兩次count ,不過其值分別為1和2。

這就是fork與vfork函式的區別:

(1)fork:子程序拷貝父程序的資料段

vfork:子程序與父程序共享資料段

(2) fork:父,子程序的執行次序不確定

vfork:子程序先執行,子程序執行退出後父程序再執行

建立程序 fork函式

最近,我在linux中學到了乙個神奇的函式,名為fork 函式,它的作用是建立程序。它的神奇之處在於呼叫fork 函式時,系統會建立乙個與原來程序幾乎完全相同的程序,大致的意思就是兩個程序可以做完全相同的事,但如果初始引數或者傳入的變數不同,兩個程序也可以做不同的事 就相當於是轉殖了乙個自己。先來看...

程序建立函式fork

函式原型 pid t fork void 標頭檔案 include 函式功能 建立乙個子程序 返回值 1.1 建立失敗 2.0 返回的是子程序 3.0 返回的是父程序,返回值是子程序 id函式特性 1.呼叫一次,會有兩個返回值 2.先返回哪個值,不確定,一般先返回父程序 3.使用者可以通過延時函式,...

建立程序庫函式fork

unix作業系統提供了庫函式fork來建立乙個新的程序,本文分析一下fork呼叫背後發生了什麼。例如 int pid fork 從fork函式返回,父程序 pid 0 和子程序 pid 0 擁有相同的user leverl context 包括data,text以及stack 的拷貝。fork函式的...