3 回答

TA貢獻1854條經驗 獲得超8個贊
exec()系列中的函數具有不同的行為:
l:參數作為字符串列表傳遞給main()
v:參數作為字符串數組傳遞給main()
p:搜索新運行程序的路徑
e:環境可以由調用方指定
您可以將它們混合,因此具有:
int execl(const char * path,const char * arg,...);
int execlp(const char * file,const char * arg,...);
int execle(const char * path,const char * arg,...,char * const envp []);
int execv(const char * path,char * const argv []);
int execvp(const char * file,char * const argv []);
int execvpe(const char * file,char * const argv [],char * const envp []);
對于所有這些文件,初始參數是要執行的文件的名稱。
有關更多信息,請閱讀exec(3)手冊頁:
man 3 exec # if you are running a UNIX system

TA貢獻1795條經驗 獲得超7個贊
該exec
系列函數使你的程序執行不同的程序,取代舊的程序它運行。即,如果您打電話
execl("/bin/ls", "ls", NULL);
然后使用ls
調用的的進程ID,當前工作目錄和用戶/組(訪問權限)執行程序execl
。之后,原始程序不再運行。
要啟動新進程,將使用fork
系統調用。要執行程序而不替換原始程序,您需要fork
依次按exec
。
- 3 回答
- 0 關注
- 739 瀏覽
添加回答
舉報