execl函数总结以及扩展

简介: execl函数总结以及扩展

为什么要用exec族函数,有什么作用?

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


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


ba8685cbb2b5d04bfa3c681b7a0ad3a4_35f8787ad82940df9ce9877ee35913ec.png


返回值:

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函数参数存放位置不同

相关文章
|
11月前
fgets函数(配合问题详解)
fgets函数(配合问题详解)
|
15天前
|
缓存 安全 编译器
宏和函数的效率
【10月更文挑战第19天】
|
20天前
|
存储 Serverless C语言
如何使用标准库函数中的幂函数和对数函数
本文介绍了C语言中常用的数学函数`pow()`和对数函数的使用示例。首先,通过计算2的3次方和物体的动能,展示了`pow()`函数在整数和浮点数幂次方计算中的应用。接着,通过计算放射性物质的衰变常数和声音强度级别,分别介绍了自然对数`log()`和以10为底的对数`log10()`函数的使用方法。示例代码详细说明了每个函数的具体用法和应用场景。
|
API 开发工具
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
116 0
|
6月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
141 0
|
11月前
|
Unix Linux
fcntl()函数的作用及用法
fcntl()函数的作用及用法
184 0
|
监控 NoSQL C语言
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
139 0
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
295 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
|
C语言
C语言完成通讯录(内含解析和操作注意事项) 要求将函数分为:函数声明部分,函数主要部分,各个函数实现部分
C语言完成通讯录(内含解析和操作注意事项) 要求将函数分为:函数声明部分,函数主要部分,各个函数实现部分
79 0
C语言完成通讯录(内含解析和操作注意事项) 要求将函数分为:函数声明部分,函数主要部分,各个函数实现部分