Linux下execl函式學習
阿新 • • 發佈:2019-01-23
Linux下標頭檔案
#include <unistd.h>
函式定義
int execl(const char *path, const char *arg, ...);
函式說明:
execl()其中字尾"l"代表list也就是引數列表的意思,第一引數path字元指標所指向要執行的檔案路徑, 接下來的引數代表執行該檔案時傳遞的引數列表:argv[0],argv[1]... 最後一個引數須用空指標NULL作結束。
函式返回值:
成功則不返回值, 失敗返回-1, 失敗原因存於errno中,可通過perror()列印
#include <unistd.h>/*** File: execl.c**/ #include <iostream> using namespace std; int main() { // 執行/bin目錄下的ls, 第一引數為程式名ls, 第二個引數為"-al", 第三個引數為"/etc/passwd" if(execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *) 0) < 0) { cout<<"execl error"<<endl; } else { cout<<"success"<<endl; } return 0; }
execl函式特點:
當程序呼叫一種exec函式時,該程序完全由新程式代換,而新程式則從其main函式開始執行。因為呼叫exec並不建立新程序,所以前後的程序ID並未改變。exec只是用另一個新程式替換了當前程序的正文、資料、堆和棧段。
用另一個新程式替換了當前程序的正文、資料、堆和棧段。
當前程序的正文都被替換了,那麼execl後的語句,即便execl退出了,都不會被執行。