C語言建立多個程序 Linux環境

2021-09-25 23:31:52 字數 1192 閱讀 4426

fork可以用來建立乙個程序,當我們在乙個迴圈體中,就可以多次fork,建立多個程序,但是由於fork後是多程序一起執行,往往會出現令人意外的情況,請看下面的demo:

#include //標準的輸入輸出函式

#include //standard library標準庫函式標頭檔案

#include //對於類 unix 系統,unistd.h 中所定義的介面通常都是大量針對系統呼叫的封裝 fork、

int main()

}//返回大於0的程序就是父程序

if(pid>0) //父程序

else if(pid==0) //子程序

return 0; //養成好習慣,返回程式執行狀態碼

}

執行編譯後,執行輸出,./a.out,輸出結果如下:

總共有32個程序出來,原本是想建立五個子程序,為什麼呢?

原因在於在fork後,迴圈體for的邏輯在子程序也會執行,這樣就變成了子程序也會fork子程序,而再次迴圈子程序又會建立子程序,如果反覆五次,是呈現指數增加的,所以是2的5次方,32個程序。

這並不是我們想要的結果,所以需要避免子程序繼續fork

#include //標準的輸入輸出函式

#include //standard library標準庫函式標頭檔案

#include //對於類 unix 系統,unistd.h 中所定義的介面通常都是大量針對系統呼叫的封裝 fork、

int main()

//迴圈中,fork函式呼叫五次,子程序返回0,父程序返回子程序的pid,

//為了避免子程序也fork,需要判斷並break

if (pid==0)

}//返回大於0的程序就是父程序

if(pid>0) //父程序

else if(pid==0) //子程序

return 0; //養成好習慣,返回程式執行狀態碼

}

執行編譯後,執行輸出,./a.out,輸出結果如下:

以上是學習linux程式設計基礎一書的筆記。

C語言建立子程序

程式執行的時候,可以建立與自己關聯的子程序,建立了這個子程序之後,可以選擇等待這個子程序執行完畢,也可以讓子程序與自己並行執行,還可以終止自己轉而執行子程序。這些操作都是通過一系列相似而又有細微區別的庫函式來實現。下面對這些可以使用的庫函式進行介紹。它的函式定義如下 include int syst...

linux中建立多個子程序的方法

今天,師兄問我乙個問題說 小濤啊,建立兩個程序太簡單了,怎麼建立多個程序呢?我說那還不容易,看下邊 省略必要標頭檔案 int main if pid 0 0 printf this is parent d,child is d n getppid getpid else wait 5 return ...

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

fork 同時建立多個子程序方法 第一種方法 驗證通過 特點 同時建立多個子程序,每個子程序可以執行不同的任務,程式 可讀性較好,便於分析,易擴充套件為多個子程序 int main void pid t p2 fork if p2 0 int st1,st2 waitpid p1,st1,0 wai...