Linux 程序控制程式設計

2021-08-26 15:11:07 字數 876 閱讀 6039

1.fork()

在linux 中建立乙個新程序的惟一方法是使用fork()函式。fork()函式是linux 中乙個非常重要的函式,和

讀者以往遇到的函式有一些區別,因為它看起來執行一次卻返回兩個值。難道乙個函式真的能返回兩個值

嗎?希望讀者能認真地學習這一部分的內容。

(1)fork()函式說明。

fork()函式用於從已存在的程序中建立乙個新程序。新程序稱為子程序,而原程序稱為父程序。使用fork()

函式得到的子程序是父程序的乙個複製品,它從父程序處繼承了整個程序的位址空間,包括程序上下文、

**段、程序堆疊、記憶體資訊、開啟的檔案描述符、訊號控制設定、程序優先順序、程序組號、當前工作目

錄、根目錄、資源限制和控制終端等,而子程序所獨有的只有它的程序號、資源使用和計時器等。

因為子程序幾乎是父程序的完全複製,所以父子兩個程序會執行同乙個程式。因此需要用一種方式來區分

它們,並使它們照此執行,否則,這兩個程序不可能做不同的事。

實際上是在父程序中執行 fork()函式時,父程序會複製出乙個子程序,而且父子程序的**從fork()函式的

返回開始分別在兩個位址空間中同時執行。從而兩個程序分別獲得其所屬fork()的返回值,其中在父程序

中的返回值是子程序的程序號,而在子程序中返回0。因此,可以通過返回值來判定該程序是父程序還是

子程序。

同時可以看出,使用fork()函式的代價是很大的,它複製了父程序中的**段、資料段和堆疊段裡的大部

分內容,使得fork()函式的系統開銷比較大,而且執行速度也不是很快。

(2)fork()函式語法。

表 7.2 列出了fork()函式的語法要點。

所需標頭檔案#include

linux程序控制程式設計

一 程序與程式 程式是放到磁碟的可執行檔案 程序是指程式執行的例項 程序是動態的,程式是靜態的 程式是有序 的集合 程序是程式的執行。通常程序不可在計算機之間遷移 而程式通常對應著檔案 靜態和可以複製。程序是暫時的,程式使長久的 程序是乙個狀態變化的過程,程式可長久儲存。程序與程式組成不同 程序的組...

Linux程序控制程式設計(五)

一 程序建立 在pid fork 之前,只有乙個程序在執行,但在這條語句執行之後,就變成兩個程序在執行了,這兩個程序的共享 段,將要執行的下一條語句都是if pid 0 兩個程序中,原來就存在的那個程序被稱作 父程序 新出現的那個程序被稱作 子程序 父子程序的區別在於程序識別符號 pid 不同.例 ...

linux程式設計之程序控制

一 fork include pid t fork void 返回值 有兩個,乙個是子程序的id,另乙個為零。當返回值為0時,進入子程序,大於0進入父程序,返回 1時建立程序錯誤。子程序與父程序的比較 1 子程序與父程序的程序id不同。且父程序id不同。2 記憶體布局 子程序是父程序的副本,其中子程...