程序程式替換

2021-10-02 23:52:12 字數 1398 閱讀 6448

因為父程序通過fork()建立的子程序,與父程序執行相同程式,當我們想讓子程序執行不同的程式時,就需要使用exec函式將子程序與新程式替換

程序程式替換需要注意幾點

exec 函式族 其中引數有差異,底層原理差不多相同

exrcl 中的l意為 list,這個exec函式是乙個可變引數列表的函式

函式功能

execl

可變引數列表的函式

execlp

自動從path路徑中找到可執行程式

execle

需要傳入代替換程式路徑,需要程式設計師自己管理環境變數

引數的含義依次是:替換的程式路徑,所要替換的程式,命令列引數,以null識別結束

execl

("/usr/bin/ls"

,"ls"

,"-l"

,null);

execlp

("./program"

,"program"

,null);

execle需要自定環境變數

char

* env[3]

=;env[0]

="path=/home/user/path"

;env[1]

="myenv=abc"

;env[2]

=null

;execle

("./program"

,"program"

,null

,env)

;

execv v意為陣列,命令列引數以陣列形式輸入

同型別函式有 execv() , execvp(),execve() 的特性與上面所給的**中功能相同

引數的含義依次是:替換的程式路徑,命令列引數陣列

char

* ar**[3]

=;ar**[0]

="program"

;ar**[1]

="-a"

;ar**[2]

=null

;//陣列中的最後乙個以null結尾

execv

("./program"

,ar**)

;如果在path環境變數中新增了當前路徑,則可以省略輸入路徑位址

execvp

("program"

,ar**)

關於exec函式族的轉化關係

程序程式替換

替換原理 用fork建立子程序後執行的是和父程序相同的程式,但有可能在執行不同的 分支,但是在實際情況中,我們通常希望子程序和父程序執行不同的程式,來提高效率,所以才有程式替換 子程序往往要呼叫一種exec函式用來執行另乙個程式,將 和資料替換為可執行檔案的 和資料,環境變數並不改變。當程序的使用者...

程序程式替換

程序程式替換並沒有建立新的程序 怎麼樣才算是新建了乙個程序?建立好task struct,再把task struct插到雙向鍊錶裡面,這才是建立好了乙個程序。所謂的程序程式替換就是把物理記憶體上的資料和 替換成了另外乙個磁碟上的可執行檔案的資料和 說白了,我們前面寫的一些程式都是把它編譯成乙個可執行...

Linux程序的程式替換

程式替換 假如作業系統正在執行某乙個程式,我們可以利用程式替換函式指定乙個新的程式,讓作業系統去執行我們新指定的程式。也就是這樣一種情形下,我們fork乙個程序,如果fork成功,子程序會和父程序執行相同的 而我們建立子程序是希望子程序執行指定的操作,所以需要執行exec族函式。程式替換函式 程式替...