#include <unistd.h>
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[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execve(const char *filename, char *const argv[], char *const envp[]);
exec系统调用的功能是在当前进程里执行一个新的进程以替换原来的进程,上面几个都是exec函数簇中的成员,但事实上的系统调用只有一个:
int execve(const char *filename, char *const argv[], char *const envp[]);
其他的几个函数只是这个系统调用的wrapper而已。
其中函数名字的字母l代表list,即以列表的方式传递参数(后面有...);v代表vector,即以数组的方式传递参数(后面无...);e代表环境变量;而p代表path,这里的意思是程序环境变量中的当前路径。