linux
系統通過
fork()
系統呼叫建立乙個程序,
fork()
函式定義如下:
#include
#include
pid_t fork(void);
fork()
系統呼叫在應用程式庫里對應乙個同名的
fork()
函式。fork()
函式的定義很簡單,但是初學者會感到不好理解,應注意分析多程序環境的特點。如圖
8-1所示為建立程序的過程。
從圖8-1
中可以看出,
fork()
函式的作用是建立乙個程序。在應用程式呼叫
fork()
函式後,會建立乙個新的程序,稱做子程序,原來的程序稱做父程序。從這以後,執行的已經是兩個程序了,子程序和父程序都可以得到
fork()
函式的返回值。對於子程序來說,
fork()
函式的返回值是
0,對於父程序來說,
fork()
函式返回的是子程序的程序號。如果建立程序失敗,
fork()
函式會給父程序返回
–1,這也是判斷程序是否建立成功的依據。
圖8-1使用
fork()
系統呼叫建立程序
fork()
函式建立子程序後,會複製父程序的資料段、**段和堆疊空間等到子程序的空間。同時,子程序會共享父程序中開啟的檔案。換句話說,父程序已經開啟的檔案,在子程序中可以直接操作。例項
8-2演示了建立程序的過程。
例項8-2
建立程序演示
1 #include
2 #include
3 #include
4 #include
5 6 int main()
7 15else if (pid==0) else
20 21return 0;
22 }23
程式定義了乙個
pid_t
型別的全域性變數來存放程序號,
pid_t
是個預定義的型別,其實就是
int型別。**的第
10行呼叫
fork()
建立程序,從第
11行開始,程式已經不是乙個程序了,而是被子程序和父程序執行,並且全域性變數
pid也被複製乙份到子程序中,所以,第
15行和第
11行的
pid值是不一樣的,根據
fork()
函式的返回結果,程式對
pid值進行了判斷,並且列印出了父程序和子程序。
8 13 爬蟲筆記1
爬蟲的過程 1.首先需要了解業務需求 2.根據需求,尋找 3.將 資料獲取到本地 可以通過urllib,requests等包 4.定位資料 re xpath css json等 5.儲存資料 mysql redis 檔案格式 2 爬取內容並寫入同檔案目錄下乙個新的html檔案 from urllib...
813 找到對映序列
813.找到對映序列 中文english 給出了兩個a和b的列表,從a對映到b,b是由a的一種回文構詞法構成通過隨機化a中元素的順序來實現的。我們想要找到乙個指數對映p,從a到b,對映p i j表示a出現在b中的第i個元素。這些列表a和b可能包含重複。如果有多個答案,輸出任何乙個。樣例1輸入 a 1...
程序建立,程序等待,程序終止
1 程序建立,2 程序等待,3 程序終止 程序建立被定義為通過父程序建立子程序的過程。fork函式 函式原型 pid t fork void 特點 1.fork函式呼叫一次,返回兩次兩次返回值得區別分別是子程序當中的返回值為0,父程序當中的返回值為新建子程序的id 將id返回給父程序的原因是沒有函式...