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函式的...