子进程偷梁换柱

exec函数族

常用后缀:

  1. l:代表以列表形式传参(list)
  2. v:代表以矢量数组形式传参(vector)
  3. p:代表使用环境变量Path来寻找指定执行文件
  4. 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
  • 新程序没有执行权限