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

相关文章
fgets函数(配合问题详解)
fgets函数(配合问题详解)
|
6月前
|
C语言
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
54 0
|
7月前
|
程序员 编译器 C语言
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(中)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
54 0
|
7月前
|
存储 程序员 编译器
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(上)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
61 0
|
7月前
|
自然语言处理 编译器 Linux
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(下)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
74 0
|
7月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
185 0
|
Unix Linux
fcntl()函数的作用及用法
fcntl()函数的作用及用法
219 0
|
程序员 C语言
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习1
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习1
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习1
|
机器学习/深度学习 C语言
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习3
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习3
|
C语言
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习2
【C语言】函数(上):库函数 -- 自定义函数 -- 函数调用及练习2