其实有六种以exec开头的函数,统称exec函数:
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 *path, char *const argv[], char *const envp[]);
以上函数包含在头文件#include <unistd.h>中
注意:这些函数的返回值与以往的有所不同。
如果调用成功则加载新的程序从启动代码开始执行,不再返回,
如果调用出错则 返回-1,
所以exec函数只有出错的返回值而没有成功的返回值。
如何记忆以上的函数呢?下面对函数及形参做以说明。
1.不带字母p(path)的函数:第一个参数(path)必须是程序的相对路径或绝对路径。
例如:“/bin/ls”而不是“ls”。
对于带字母p的函数:第一个参数(file)是程序名。
例如:“ls”
2.带有字母l(list)的函数:要求将新程序的每个命令行参数都当做一个参数传给它。其命令行参数是可变的,最后 一个可变参数必须以NULL结尾。