8 1 3 建立程序

2021-05-13 03:22:58 字數 1347 閱讀 8538

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返回給父程序的原因是沒有函式...