exec族函数

exec族函数本文详细介绍了 Linux 系统中 exec 函数族 包括 execl execlp execle execv execvp 和 execvpe 的区别与用法 重点讲解了如何通过这些函数在进程内部执行可执行文件 并讨论了环境变量的使用

大家好,欢迎来到IT知识分享网。

功能:
在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。
函数族:
exec函数族分别是:exect,execlp,execle,execv,execvp,execvpe。
函数原型:

#include <unistd.h> extern char **environ; int execl(const char *path,const char *arg,...);//常用 int execlp(const char *file,const char *arg,...);//带p能通过环境变量PATH查找到可执行文件,常用 int execle(const char *path,const char *arg,...,char *const envp[]); int execv(const char *path,char *const argv[]);//常用 int execp(const char *file,char *const argv[]);//常用 int execvpe(const char *file,char *const argv[],char *const envp[]); 

返回值:
exec函数族的函数执行成功后不会返回,调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往下执行。

参数说明:
path:可执行文件的路径名字
arg:可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束
file:如果参数file中含/,则就将其视为路径名,否则就按PATH环境变量,在它所指定的各目录中搜寻可执行文件。

//echoarg.c #include <stdio.h> int main(int argc,char **argv) { 
    int i = 0; for(i = 0;i < argc;i++){ 
    printf("argv[%d]:%s\n",i,argv[i]); } return 0; } 
//execl.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { 
    printf("before execl\n"); if(execl("./echoarg","echoarg","abc",NULL) == -1) { 
    printf("execl failed\n"); } printf("after execl\n"); return 0; } 

在这里插入图片描述
注:execl的第一个参数是路径名

//execlp.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { 
    printf("before execlp\n"); if(execlp("ls","-l",NULL) == -1) { 
    printf("execl failed\n"); } printf("after execl\n"); return 0; } 

在这里插入图片描述
显示环境变量:
在这里插入图片描述
增加环境变量:
export PATH = $PATH:路径

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149638.html

(0)
上一篇 2025-03-22 22:15
下一篇 2025-03-22 22:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信