fork
同時建立多個子程序方法
第一種方法:驗證通過
特點:同時建立多個子程序,每個子程序可以執行不同的任務,程式 可讀性較好,便於分析,易擴充套件為多個子程序
int main(void)
pid_t p2 = fork();
if( p2 == 0 )
int st1, st2;
waitpid( p1, &st1, 0);
waitpid( p2, &st2, 0);
printf("in parent, child 1 pid = %d\n", p1);
printf("in parent, child 2 pid = %d\n", p2);
printf("in parent, pid = %d\n", getpid());
printf("in parent, child 1 exited with %d\n", st1);
printf("in parent, child 2 exited with %d\n", st2);
return 0; }
第二種方法: 驗證通過
特點:同時建立兩個子程序,結構比較繁瑣,程式可讀性不好,不易擴充套件
#include
#include
#include//這個標頭檔案不能少,否則
pid_t
沒有定義
main()
else
else
} }
第三種方法:for
迴圈方法
特點:其實每次迴圈只是建立了單個程序,並沒有同時建立多個程序
#include
#include
#include
main()
wait(p1,null,0); //父程序等待p1子程序執行後才能繼續fork其他子程序
printf("this is parent process%d\n",getpid()); }
} 注意:標註的
return 0
對程式結果影響很大 無
return 0
情況
#include
#include
#include
main()
wait(p1,null,0);
printf("this is parent process%d\n",getpid()); }
} 結論:父程序會生成
n(n+1)/2+1
個子程序,n
為迴圈次數,本例中共有
7 個子程序, 但實際上只有
3 個是父程序產生的,其餘都為子程序
fork
()出來的
。父程序fork了3
個程序,第乙個子程序執行完之後又
fork了2
個程序,第
2個子程序
fork了1
個程序。
正確的使用
linux中的用fork()由乙個父程序建立同時多個子程序的格式如下:
int status,i;
for (i = 0; i
< 10; i++)
if (status == -1)
else if (status == 0)
//每個子程序都會執行的**
else
Linux 程序建立 fork
1 fork 函式原型 pid t fork void 函式返回值型別為 pid t,實質是 int 型別,linux 核心2.4.0版本的定義是 typedef int kernel pid t typedef kernel pid t pid t 2 fork 函式的底層實現 fork vfor...
Linux中的程序建立函式fork
linux中的程序通過fork建立,並通過exec執行,分為兩步。在linux中所有的程序都是pid為1的init程序的子程序,核心在系統啟動的最後階段啟動init程序。系統中的所有程序都有乙個父程序,在程序描述符中有指向父程序的指標,具有同乙個父程序的程序稱為兄弟程序,同時每個程序描述符中還有乙個...
初識linux 中的fork
fork函式將執行著的程式分成2個 幾乎 完全一樣的程序,每個程序都啟動乙個從 的同一位置開始執行的執行緒。這兩個程序中的執行緒繼續執行,就像是兩個使用者同時啟動了該應用程式的兩個副本。1 在父程序中,fork返回新建立子程序的程序id 2 在子程序中,fork返回0 3 如果出現錯誤,fork返回...