linux下exec函式族

2021-10-24 01:15:36 字數 1808 閱讀 2856

1.1、exec函式族相關函式

#include extern char **environ;

int execl(const char *path, const char *arg, ...

/* (char *) null */);

int execlp(const char *file, const char *arg, ...

/* (char *) null */);

int execle(const char *path, const char *arg, ...

/*, (char *) null, char * const envp */);

int execv(const char *path, char *const ar**);

int execvp(const char *file, char *const ar**);

int execvpe(const char *file, char *const ar**,

char *const envp);

1.1、exec函式族的作用

在linux下有時候我們希望可以在當前程序中載入來自外部的程式或者可以直接呼叫shell中的ps、ls等命令,這個時候exec函式族就可以派上用場了。

最後面帶「e」的函式execve和execle還允許呼叫者將其環境變數傳遞給需要執行的程式;

1.2、exec函式族各個函式的作用

以下例程均載入test.c函式,在shell中執行gcc test.c -o test

#include #include #include extern char **environ;//linux系統變數,儲存環境變數的值

int main(int argc,char *ar**)

; if(0 == strcmp(ar**[1],"execl")) }

else }

}

執行結果:

2.2、execlp和execvp

這兩個函式其實完全可以替代上面的execl和execv,不同的地方在於execlp和execvp可以從系統的path環境變數中查詢需要執行的檔案,而execl和execv必須要寫出完整的路徑名。

#include #include "unistd.h"

int main(int argc,char *ar**)

; if(0 == strcmp(ar**[1],"execlp")) }

else

printf("execv sucess\r\n");

}}

執行結果

2.3、execle和execve

#include #include "unistd.h"

int main(int argc,char *ar**)

; char *env[10] = ;

if(0 == strcmp(ar**[1],"execle")) }

else

printf("execve sucess\r\n");

}}

執行結果

Linux 程序 exec函式族

其他exec 函式 練習拓展dup2 dup to 函式 一 exec的簡介 1.fork建立程序後執行的是和父程序相同的程式 但有可能執行不同的 分支 子程序往往要呼叫一種exec函式執行另一種程式。當程序呼叫一種exec函式時,該程序的使用者空間 和資料完全被新程式替換,從新程式的啟動例程開始執...

Linux程序 exec族函式

1 為什麼要使用exec族函式 當我們fork乙個子程序就是為了執行乙個新的程式,此時可以呼叫exec族函式,執行已經編譯好的可執行程式或者linux自帶的ls cd等命令。2 exec族函式如何使用 函式原型 include extern char environ intexecl const c...

Linux之exec函式族

fork函式建立子程序後執行的是和父程序相同的程式 但有可能執行不同的 分支 子程序往往要呼叫一種exec函式以執行另乙個函式。當程序呼叫一種exec函式時,該程序的使用者空間 和資料完全被新程式替換,從新程式的啟動例程開始執行。呼叫exec並不建立新程序,所以呼叫exec前後該程序的id並沒改變 ...