exec family成员

包括例如execl,execlp,execle,execv,execvp,execvpe等在内。

execve VS. execvp

  • execve的函数声明如下

    1
    2
    3
    #include <unistd.h>

    int execve(const char *filename, char *const argv[], char *const envp[]);
  • execvp的函数声明如下

    1
    2
    3
    #include <unistd.h>

    int execvp(const char *file, char *const argv[]);
  • execve中的filename参数需要完整的文件路径(例如/bin/ls),且需要通过envp参数指定环境变量。而execvp只需传入简要的文件名(例如ls),且不需要指定环境变量。

  • argv和envp都是字符串数组,且数组最后一个元素必须为NULL,其中argv[0]需要和被执行文件相关(一般即为执行的文件名称,例如ls)。

environ变量

  • 变量声明

    1
    2
    3
    #include <unistd.h>

    extern char **environ;
  • 一般会与execve搭配使用。