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

相关文章
|
10月前
fgets函数(配合问题详解)
fgets函数(配合问题详解)
|
11月前
|
API 开发工具
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
107 0
|
5月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
100 0
|
10月前
|
安全 C语言
strtok()函数的使用方法
strtok()函数的使用方法
127 0
|
Shell
Shell 函数使用(定义函数、函数传参)
Shell 函数使用(定义函数、函数传参)
80 0
实现一个函数,函数完成功能如下:
实现一个函数,函数完成功能如下:
|
监控 NoSQL C语言
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
128 0
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
270 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
|
物联网 Linux C语言
Execl 函数|学习笔记
快速学习 Execl 函数
Execl 函数|学习笔记