Linux程序控制 程序替換

2021-08-31 03:18:02 字數 2525 閱讀 2921

使用fork建立的程序和父程序執行的相同的程式(執行不同的**分支),子程序需要執行其他程式需要通過exec函式進行程序替換執行另乙個程式。

替換函式

exec函式總共有六個

int

execl

(const

char

*path,

const

char

*arg,..

.);int

execlp

(const

char

*file,

const

char

*arg,..

.);int

execle

(const

char

*path,

const

char

*arg,..

.,char

*const envp)

;int

execv

(const

char

*path,

char

*const argv)

;int

execvp

(const

char

*file,

char

*const argv)

;int

execve

(const

char

*path,

char

*const argv,

char

*const envp)

;

這六個函式中execve是系統呼叫其他五個函式實現均為呼叫execve的庫函式

引數:函式名中含l(list) 指引數採用列表(使用羅列的方式傳參並且以null結束)

函式名中含p(path) 指函式利用程式的path環境變數查詢子程式

函式名中含v(vector) 引數接收到乙個以null結尾的字串陣列的指標

函式名中含e(env) 指自己維護環境變數

返回值:

成功將不再返回,開始執行新的程式(從啟動**開始執行)

失敗返回-1

函式的使用

execv函式

execvp函式

execlp函式

execle函式

//print程式**

在這裡要解釋的是,如果不使用execle 和execve 函式程式的環境變數均繼承父程序,當使用這兩個函式時程式的環境變數由自己組織;

Linux程序控制 2 程序等待 程式替換

我們知道,子程序先退出,父程序如果不管不顧,就會導致殭屍程序,進而造成資源洩漏等嚴重問題 一旦產生殭屍程序,殺人不眨眼 的kill 9也無能為力,因為沒有辦法殺死乙個已經僵死的程序 那麼如何避免產生殭屍程序呢?父程序通過程序等待的方式,子程序資源,獲取子程序退出資訊 這裡先說一下阻塞和非阻塞 阻塞 ...

linux 程序控制

什麼是程序 每乙個程序在系統中都有唯一的id標示它,此id為程序標示符 程序標示符的型別 pit t,其實是乙個無符號整形 乙個程序標示符對應唯一的乙個程序,多個程序標示符可以對應同乙個程式 程序和程式的區別 程式 可執行的二進位制 檔案,這種檔案載入到記憶體中執行就得到了乙個程序 程序 同乙個程式...

Linux程序控制

linux程序控制 獲取pid include include pid t getpdi void 獲取本程序id pdi t getppid vodi 獲取父程序id,及獲取建立子程序的程序id 程序建立 include pid t fork void 建立子程序 呼叫一次返回兩次值 1.父程序中...