1、exec函数族
头文件: #include <unistd.h>
int execl (const char *pathname, const char*arg0,……)
int execv (const char *pathname, char * const * argv[])
int execle (const char *pathname, const char *arg0,……,char * const envp[])
int execve (const char *pathname, char * const* argv[],char * const envp[])
int execlp (const char *filename, const char *arg0,……)
int execvp (const char *filename, char *const argv[])
若是成功则不返回,出错则返回-1
2、exec函数的作用
exec函数是根据制定的文件名找到可执行文件,并用它来取代调用进程的内容。即在调用进程内部执行一个可执行文件。
其中可执行文件可以是二进制文件,以可以任何linux下可执行的脚本文件
3、6个函数间关系
只有execve函数是内核中的系统调用,其他5个都是调用execve的库函数
4、6个函数的区别
4.1 前四个以路径名作为参数,后两个取文件名作为参数
4.2 上图中,上面那行中的3个函数,每个参数字符串指定exec的一个独立参数,并以一个空指针结束可变数量的这些参数。下面一行的三个函数都有一个作为exec参数的argv数组,其中含有指向新程序更个参数字符串的所有指针。argv数组必须含有一个用于制定其末尾的空指针
4.3 左列两个函数是使用当前PATH环境变量把该文件名参数转化为一个路径名。但是一旦这2个函数的filename参数中含有一个“/”,那就不再使用PATH环境变量。右两列4个函数指定一个全限定的pathname参数。
4.4 左四列是使用外部变量environ的当前值来构造一个传递给新程序的环境列表