
execlp(const char *file,...)
file只需要提供函数名字,系统会在环境变量自动找到合适的
execv(const char *path,char * const argv\[\])
这里得第二个参数是指针数组,也就是说,我们之前不是要手动输入吗,这里不需要,我们提前把要执行的写到表格中,这里直接传一整个表格就可以了
execvp(const char* file,char *const argv\[\])
这里是上面两个的结合
总结:
p=PATH在环境变量里面找
v:传入参数表,不需要一个个写
e:传入你自己构造的环境变量
execvpe(const char* file,char *const argv\[\],char*const envp\[\])
我我们写file是要去环境变量里面寻找,但是有些时候,环境变量是找不到的,所以这里第三个参数就表示,在我们自己设立的环境变量里面去寻找
补充:我们的替换是存在进程层面的,也就是说,只要一个程序开启运行变成了一个进程,此时就可以被替换,不在乎它是什么语言
我们第三个参数除了写我们自己的,如果不想写可以用
environ来占位,表示使用老的环境变量
我们上讲的其实都是库函数
他们都来自于我们的系统调用
execvel(const char *filename,char * const argv\[\],char *const envp\[\])
本质库函数都是在调用系统调用
自主shell命令行解释器


