linux中程序執行exec家族

2021-07-23 21:30:38 字數 2541 閱讀 4561

啟動程序:exec族

共用標頭檔案:#include

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 execve(const

char *file,char *const argv,char *const envp);

1.execl 

函式定義: 

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

返回值

函式執行成功時沒有返回值,執行失敗時的返回值為-1.

函式說明 execl()用來執行引數path字串所代表的檔案路徑,第二個引數是利用陣列指標來傳遞給執行檔案,最後乙個引數需要以空指標(null)結束。 

2.execlp 

函式定義 

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

返回值

函式執行成功時沒有返回值,執行失敗時的返回值為-1.

函式說明 execl()用來執行引數path字串所代表的目錄中找到符合引數file的檔名,找到後便執行該檔案,第二個引數是利用陣列指標來傳遞給執行檔案,最後乙個引數需要以空指標(null)結束。 

3.execle 

函式定義 

int execle(const char *path,const char *arg, ..., char * const envp);

返回值

函式執行成功時沒有返回值,執行失敗時的返回值為-1.

函式說明 execl是用來執行引數path字串所代表的檔案路徑,並為新程式複製最後乙個引數所指示的環境變數。接下來的引數代表執行該檔案時傳遞過去的argv(0)、argv[1]……,最後乙個引數必須用空指標(null)作結束。 

4.execv 

函式定義 

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

返回值

函式執行成功時沒有返回值,執行失敗時的返回值為-1.

函式說明 execv()用來執行引數filename字串所代表的檔案路徑,第二個引數是利用陣列指標來傳遞給執行檔案,最後乙個引數則為傳遞給執行檔案的新環境變數陣列。 

5.execvp 

函式定義 

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

返回值

函式執行成功時沒有返回值,執行失敗時的返回值為-1.

函式說明 execvp()用來執行引數path字串所代表的目錄中找到符合引數file的檔名,找到後便執行該檔案,第二個引數是利用陣列指標來傳遞給執行檔案。 

6.execve 

函式定義 

int execve(const char *filename, char *const argv[ ], char *const envp[ ]);

返回值

函式執行成功時沒有返回值,執行失敗時的返回值為-1.

函式說明 execve()用來執行引數filename字串所代表的檔案路徑,第二個引數是利用陣列指標來傳遞給執行檔案,並且需要以空指標(null)結束,最後乙個引數則為傳遞給執行檔案的新環境變數陣列。

exec函式族裝入並執行程式pathname,並將引數arg0(arg1,arg2,argv,envp)傳遞給子程式,出錯返回-1。在exec函式族中,字尾l、v、p、e新增到exec後,所指定的函式將具有某種操作能力有字尾: 

字尾 操作能力

l 希望接收以逗號分隔的引數列表,列表以null指標作為結束標誌,引數傳遞為逐個列舉方式:execl execle execlp 

v 希望接收到乙個以null結尾的字串陣列的指標,引數傳遞為構造指標陣列方式:execv execve execvp 

p 是乙個以null結尾的字串陣列指標,函式可以dos的path變數查詢子程式檔案,可執行檔案查詢方式為檔名:execlp execvp 

e 函式傳遞指定引數envp,允許改變子程序的環境,無字尾e時,子程序使用當前程式的環境,可傳遞新程序環境變數: execle execve

linux中程序後台執行的方法

參考自 linux 讓程式在後台執行 有些程式我們在開啟時,會一直占用我們的終端,而且終端還不能關掉,所以這時候我們就需要讓程式在後台執行。1.命令 nohup nohup python u run.py run.log 2 1 引數說明 run.py 你需要後台執行的程式 run.log 執行的日...

linux執行中程序和執行緒分析

一.首先檢視系統中各程序占用cpu和記憶體的資訊,找出占用資源最多的程序pid。1.用top 獲得程序的動態更新 命令檢視 預設每5秒重新整理一次,按照cpu使用率排行。輸入m可以按照記憶體占用排行。查出占用cpu或記憶體比較高的程序pid。2.用ps 獲得程序的當前快照 命令。查出占用cpu或記憶...

執行中程序的記憶體洩露

pmap pmap d 其中的10240是執行緒的堆疊,pmap grep 10240 wc 應該和執行緒數一致,如果不一致,可能是有執行緒異常退出 或有執行緒退出時沒有釋放資源,或者有執行緒沒啟動。找到可疑的記憶體塊後,可以用gdb p掛上程序,然後x 40a 0xaddr檢視對應記憶體的資料 r...