Linux C程式設計 exec函式簇

2021-07-23 19:43:14 字數 2513 閱讀 9503

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...