子进程偷梁换柱
exec函数族
常用后缀:
l:代表以列表形式传参(list)
v:代表以矢量数组形式传参(vector)
p:代表使用环境变量Path来寻找指定执行文件
e:代表用户提供自定义的环境变量
头文件:
#include <unistd.h>
函数原型:
int execl(const char *path, const char *arg, ...)
int execlp(const char *file, const char *arg, ...)
int execv(const char *path, char *const argv[])
int execve(const char *path, char *const argv[],char *const envp[])
返回值:
成功:不返回
失败:-1
要点总结
l后缀和v后缀必须两者选其一来使用
p后缀和e后缀是可选的,可用可不用
组合后缀的相关函数还有很多,可自己进一步了解
exce函数有可能执行失败,需要预防
- 新程序的文件路径出错
- 传参或者是自定义环境变量时,没有加NULL
- 新程序没有执行权限