execl函数总结以及扩展

exec族函数用于在当前进程中替换执行新的程序,如execl用于执行具有绝对路径的程序,execlp则可以找到不在当前目录的程序,而execv参数以数组形式传递。在错误发生时,这些函数会返回-1,并设置errno。示例展示了如何使用execl和execlp进行程序调用。
摘要由CSDN通过智能技术生成

为什么要用exec族函数,有什么作用?
(1)一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的一一父进程等待客户端的服务请求。当这种请求到达时,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求到达。

(2)一个进程要执行一个不同的程序。这对shell是常见的情况。在这种情况下,子进程从fork返回后立即调用exec

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

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

在Linux编程中常用的是execl,execlp和execv函数

execl与execlp函数的区别是:

(1)execl找不到绝对路径

(2)execlp找得到

execlp与execv函数区别是:

(1)execlp参数放在函数里面

 if(execlp("ps","ps",NULL,NULL) == -1)
    {
        printf("execl failed!\n");      

    perror("why");
    }

(2)execvp参数被放在结构体

    char *argv[] = {"ps",NULL,NULL};

    if(execvp("ps",argv) == -1)
    {
        printf("execl failed!\n");      

    perror("why");
    }

1.execl函数编程及示例

vi echoarg.c

子进程从fork返回后立即调用execl函数,从原程序的调用点接着往下执行

2.execlp函数编程及示例

execlp函数可以直接访问到ps的路径

execl则需要

3.execvp函数只与execlp函数参数存放位置不同

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱嵌入式的小佳同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值