使用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.父程序中...