1. 程式人生 > >Linux系統的exec替換函式

Linux系統的exec替換函式

fork函式建立子程序後,子程序往往要呼叫一種exec函式以執行另一個程式。

exec函式負責讀取可執行行檔案並將其載入地址空間開始執行。

我們有六種不同的exec函式可供使用,它們常常被統稱為exec函式。

下面這幾個是exec函式的庫函式,它們都依存於execve系統呼叫函式:

 execve系統呼叫函式:

返回值:成功不返回,出錯返回-1

file引數:其中filename等於path,取路徑名為引數。file取檔名作為引數(函式會自行去PATH環境變數裡面找路徑)。

arg引數:其中以arg為名的都要求將新程式的每個命令列引數都說明為一個單獨的引數,最後以空指標結尾。

                以argv[]為名的則應先構造一個指向各引數的指標陣列,然後將該陣列地址作為這三個函式的引數。

envp引數:允許構造一個環境變數的陣列。

使用演示:

因為六個函式使用起來類似,我只演示了execve函式,使用了路徑名,自己構造的argv和預設的envp環境變數。

 執行結果:

可以看到ps -f的pid就是main函式的pid,說明ps -f就是main函式替換後的命令。