#include
extern char **environ;
int execl(const char *path, const char *arg, ...);
int execv(const char *path, char *const argv);
int execle(const char *path, const char *arg, ..., char * const envp);
int execlp(const char *file, const char *arg, ...);
int execvp(const char *file, char *const argv);
int execvpe(const char *file, char *const argv,char *const envp);
path 表示欲啟動程式的名稱包含路徑
arg 啟動程式帶的引數,一般第乙個引數為要執行命令名,不帶路徑且arg必須以null結束
返回值:0成功, -1失敗
帶p的exec1函式:file給出執行檔名(不需要完整路徑,它會在環境變數path當中查詢命令)帶l的exec函式:arg第乙個引數為要執行命令名,不帶路徑且arg必須以null結束
帶e的exec函式:將環境變數傳遞給需要替換的程序
舉例:
1、
execl("/bin/ls
","ls
","-l
",null);
2、
char *argv = ;ret = execvp("ls"
,argv);
int execvp(const char *file, char *const argv);
功能:從path環境變數所指的目錄中查詢符合引數file 的檔名,找到後便執行該可執行檔案,然後將第二個引數argv傳給該欲執行的檔案。
返回值:
如果執行成功則函式不會返回,執行失敗則直接返回-1,失敗原因存於errno中。
複製去google翻譯
exec族函式學習筆記
o exec族函式 為什麼使用exec族函式?讓乙個程序要執行另乙個不同的程式。在fork建立乙個新程序後,呼叫exec族函式來讓新程序執行其他程式。exec族函式 execl,execlp,execle,execv,execvp,execvpe 呼叫失敗時返回 1,並從呼叫點繼續往下執行。exec...
exec族函式總結
1 execve為系統呼叫 其他的都是封裝的函式 l 引數列表 p 在環境變數path中尋找 v 引數陣列 e 替換環境變數列表 返回值 函式出錯 返回0 否則不反回 原來的使用者區已經被替換 只留下pcb所以沒有返回的地方 exec族函式只替換使用者區 但是對核心區的pcb也有一定的影響 詳見 a...
exec函式族小結
本人最近了解了關於exec函式族相關的知識,在此進行一下總結。fork函式是用於建立乙個子程序,該子程序幾乎是父程序的副本。而當我們希望子程序去執行另外的程式時,exec函式族就提供了乙個在程序中啟動另乙個程式執行的方法。它可以根據指定的檔名或目錄名找到可執行檔案 這裡的可執行檔案既可以是二進位制檔...