今天,師兄問我乙個問題說:小濤啊,建立兩個程序太簡單了,怎麼建立多個程序呢?我說那還不容易,看下邊**:
//省略必要標頭檔案
int main()
if(pid[0] == 0)
printf("this is parent %d,child is %d\n",getppid(),getpid());
else
wait(5);
}return 0;
}
好,這段**還是挺簡單的,我們的意思是:主線程通過迴圈建立2個子程序,這時系統中的總程序數應該是3,看看輸出結果吧:
這下你明白了吧,問題沒有想象中的那樣簡單,父程序現在標號為1的迴圈中創了乙個子程序,然後第二次迴圈,前邊的兩個執行緒個建立乙個子程序,這時明顯系統中有四個程序,還是不懂?在下邊的時序圖吧:
這下你應該明白了吧,好了問題知道了,怎麼解決,方法有二;
方法一:直接看**
void createsubprocess(int num)
//子程序
else if(pid==0)
//父程序
else
{
num++;
if(num==1)printf("父程序id=%d\n",getpid());
if(num這裡的關鍵在於遞迴操作,只有父程序才進入遞迴建立子程序,子程序不進行這樣的操作。
linux中fork同時建立多個子程序的方法(二)
fork 同時建立多個子程序方法 第一種方法 驗證通過 特點 同時建立多個子程序,每個子程序可以執行不同的任務,程式 可讀性較好,便於分析,易擴充套件為多個子程序 int main void pid t p2 fork if p2 0 int st1,st2 waitpid p1,st1,0 wai...
Linuxc 建立與監控多個子程序
include include include include include 子程序個數 define sub pro count 10 處理子程序的退出訊號 void sub quit signal handle int sig 父程序的事件迴圈 void parentcycle 子程序的事件迴...
如何建立某個程序的多個子程序 方式一
相信大家都知道,在linux環境中,使用fork 函式來建立子程序.然而市面上的書籍往往都是告訴大家如何建立乙個子程序,那麼如何建立某個程序的多個子程序呢?好了,廢話不多數了,請看如下 這裡我們採用遞迴實現 include include includepid t pid num 當前已經建立的子程...