linux操作系统之exec函数族

当我们想在进程中执行另外一个函数或程序时,可以使用exec函数。进程调用exec函数,则该进程中用户空间所有代码和数据会完全被新程序替换,但是不会创建新进程,因此进程id不会发生改变。

函数族的头文件:unistd.h

l:list(命令行参数)  p:path(环境变量)    v:vector(命令行参数数组)   e:environment(环境变量)

(1)execlp函数

函数原型:int execlp(const char*file,const char*arg,...) ;成功:无返回,失败:返回-1

函数功能:借助PATH变量加载一个进程(常用于调用系统程序)

函数参数:参数1是要加载的可执行程序的名字,配合环境变量使用,如果在环境变量中没有找到,返回-1;参数2表示命令行参数(命令+参数列表)(在这个调用中,由于系统程序的源文件未知,因此对参数2 的命令要求可以随意,即第二个参数可以随意写。系统不会报错

如  execlp("ls","ls","-a","-l",NULL);

     execlp("ls","sdsffdfd","-a","-l",NULL);

(2)execl函数

函数原型:int execl(const char*file,const char*arg,...);成功:无返回,失败:返回-1

函数功能:通过可执行文件+程序名+命令参数来执行;

函数参数:参数1是可执行文件的路径,参数2是文件程序名+命令参数。

如:add是add.c编译之后的可执行文件

execl("./add","add/c",NULL);

(3) execvp函数

函数原型:int execvp(cosnt char *file,const char*argv[ ]);

函数功能:加载一个程序,自定义环境变量env

函数参数:参数1是命令的路径,参数2是变参函数,表示命令行参数,以NULL结尾

如 char *argv[]={"ls","-l",-"a",NULL);

execvp("/bin/ls",argv);

(4)exec函数族的其他函数之间联系

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值