Linux下execl函数学习

Linux下头文件
#include <unistd.h>
函数定义
int execl(const char *path, const char *arg, ...);
函数说明:
execl()其中后缀"l"代表list也就是参数列表的意思,第一参数path字符指针所指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参数须用空指针NULL作结束。

函数返回值:
成功则不返回值, 失败返回-1, 失败原因存于errno中,可通过perror()打印

     #include <unistd.h>/*** File: execl.c**/
     #include <iostream>
     using namespace std;
     int main()
     {
       // 执行/bin目录下的ls, 第一参数为程序名ls, 第二个参数为"-al", 第三个参数为"/etc/passwd"
       if(execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *) 0) < 0)
       {
           cout<<"execl error"<<endl;
       }
        else
       {
          cout<<"success"<<endl;
       }
       return 0;
     }

execl函数特点:

  当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。

  用另一个新程序替换了当前进程的正文、数据、堆和栈段。

  当前进程的正文都被替换了,那么execl后的语句,即便execl退出了,都不会被执行。




  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值