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...