简单介绍:
程序替换有两种系列函数:v和l系列
execv execvp execve 和 execl execlp execle 都是程序替换函数只是参数不同
这篇主要是l系列的函数
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ..., char * const envp[]);
后缀"l"代表list也就是参数列表的意思 也就是函数的参数形式是不定参
首先带p的就是只需要输入程序名称 然后自动到默认路径下去找 没有的就是需要设置路径
带e的就是需要手动设置默认环境变量 没有的就是默认环境变量
函数演示:
这里演示将原有程序替换为linux下基础的ls函数
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
execl("/usr/bin/ls","ls",NULL);
printf("hello execl!\n");// 仅供对比
}
编译生成execl 然后运行
execl成功将原先任务替换成了ls程序 并且替换完程序结束了之后 没有回到原先函数 直接结束进程
剩下的execlp 和 execle函数类似只是参数有不同。