替換程序exec

2021-09-12 09:11:32 字數 1246 閱讀 4040

1、exec函式族

讓父子程序執行不相干的操作

能夠替換程序位址空間的源** .txt 段

當前程式中呼叫另外乙個應用程式

首先想到 exec 之前需要 fork

返回值:

如果函式執行成功,不返回

不如執行失敗,列印錯誤資訊,退出當前程序

1、實現換核不換殼功能

2、執行乙個另外的程式不需要建立額外的位址空間

3、有乙個執行的程式 a,在 a 中呼叫另外的應用程式

呼叫 exec 族函式重新填寫新的**

exec(「ls」)

2、執行指定目錄下的程式

int execl (const char *path, const char *arg, …)

path:要執行的程式的絕對路徑

變參 arg:要執行的程式需要的引數

第一 arg:佔位

後邊的 arg:命令的引數

引數寫完之後:null

一般執行自己寫的程式

int execv(const char *path, char const ar**[ ]);

引數path = /bin/ps

char args[ ] = ;

execv("/bin/ps", args);

3、執行path環境變數能夠搜尋到的程式

int execlp (const char*file, const char *arg, …);

file:檔名,系統自動從環境變數 「$path」 所指出的路徑中進行查詢。

第一 arg:佔位

後邊的 arg:命令的引數

引數寫完之後:null

執行系統自帶的程式

/bin

execlp 執行自定義的程式:file 引數絕對值

int execvp (const char *file, const char *arg, …);

*file 檔名,系統自動從環境變數 「$path」 所指出的路徑中進行查詢。

4、int execle (const char *path, const char *arg, …)

*path:完整的檔案目錄路徑

系統呼叫函式

int execve (const char *path, char *const ar**[ ]);

*path:完整的檔案目錄路徑

程序替換和exec函式族

fork 建立的子程序一般不會執行和父程序相同的 段,而是呼叫exec相關函式,將該程序的使用者空間 和資料完全替換,子程序從替換的新程式啟動執行。exec僅僅是替換 和資料,並不會建立新程序,所以被替換的程序 id 和子程序 id 相等。如下圖 新程序從呼叫程序繼承了下列屬性 exec函式族 函式...

Linux 程序中的替換函式(exec)

摘要 本文主要講述如何在程序中執行新 以及exec系列函式的基本使用方法.在程序中執行新 用函式fork建立子程序後,如果希望在當前子程序中執行新的程式,可以呼叫exec函式執行另乙個程式.當程序呼叫exec函式時,該程序使用者空間資源 正文 資料 堆和棧 完全由新程式替代,新程式則從main函式開...

Linux系統程式設計 exec程序替換

1 讓父子程序執行不相干的操作 也就是說,在乙個執行的程式a中,呼叫另外的應用程式b。2 換核不換殼 exec族函式,能夠替換程序位址空間中的 段.text段 對應的堆 棧中的資料都會改變 重新填充新的 execl系列是變參函式 int execl const char path,const cha...