exec函式簇
在
linux
中程序要使用exec函式族
來啟動另乙個程式的執行
。系統呼叫execve()對當前程序進行替換,替換者為乙個指定的程式,其引數包括檔名(filename)、引數列表(argv)以及環境變數(envp)。exec函式族當然不止乙個,但它們大致相同,在 linux中,它們分別是:execl,execlp,execle,execv,execve和execvp。
乙個程序一旦呼叫exec類函式,它本身就"死亡"了,系統把**段替換成新的程式的**,廢棄原有的資料段和堆疊段,並為新程式分配新的資料段與堆疊段,唯一留下的,就是程序號,也就是說,對系統而言,還是同乙個程序,不過已經是另乙個程式了。(不過exec類函式中有的還允許繼承環境變數之類的資訊。)
1.execl
函式的作用:執行檔案
函式的原型:int execl(const char *path,const char *arg,…);
返 回 值:成功:函式不返回
失敗:函式返回-1
#include
int main()
2.execlp
函式的作用:從path環境變數中查詢檔案執行
函式的原型:int execlp(const char *file,const char *arg,…);
返 回 值:成功:函式不返回
失敗:函式返回-1
3.execv
函式的作用:執行檔案
函式的原型:int execv(const char *path,char * const argv);
函式的引數:path:代表的檔案路徑
argv:是乙個陣列裡指標傳遞過來
返 回 值: 成功:函式不返回
失敗:函式返回-1
int main()
;
execv(「/bin/ls」,argv);
}
4.execve
函式的作用:執行檔案
函式的原型:int execve(const char * filename, char * const argv,char * const envp);
函式的引數:filename代表的檔案路徑
argv是陣列裡指標傳過來
envp是傳遞給執行檔案的新環境變數
返 回 值: 成功:函式不返回
失敗:函式返回-1
int main()
;
char * envp = ;
execve(「/bin/ls」,argv,envp);
}
5.execvp
函式的作用:執行檔案
函式的原型:int execvp(const char * file,char * const argv);
返 回 值: 成功:函式不返回
失敗:函式返回-1
int main()
;
execvp(「ls」,argv);
}
linux c 程式設計 exec函式族
1.描述 exec 函式族將當前程序映像替換為新的程序映像,程序id不變。2.規律 exec函式族名字很相近,使用起來也很相近,它們的一般規律如下 l list 命令列引數列表 p path 搜素file時使用path變數 v vector 使用命令列引數陣列 e environment 使用環境變...
linux c程式設計system與exec等區別簡介
首先來看乙個示例 include include include include int main printf exit status d n status if status system nosuchcommand 0 printf exit status d n status if stat...
Linux 入門基礎 12 exec函式簇
作用同於wait,但可指定pid程序清理,可以不阻塞。pid t waitpid pid t pid,int status,int options 成功 返回清理掉的子程序id 失敗 1 無子程序 特殊引數和返回情況 引數pid 0 指定id的子程序 1 任意子程序 相當於wait 0 和當前呼叫w...