linux中fork同時建立多個子程序的方法(二)

2021-06-05 02:46:34 字數 1792 閱讀 9574

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返回...