#include <unistd.h> //调用exec函数族需要包含unistd.h
extern char **environ;
int execl(const char* fullpath , const char* arg , ...);
int execlp(const char* file , const char* arg , ...);
int execle(const char* fullpath , const char* arg , ..., char* const envp []);
int execv(const char* fullpath , char* const argv []);
int execvp(const char* file , char* const argv []);
int execve(const char* fullpath , const char* arg[] , char* const envp []);
int execl(const char* fullpath, const char* arg, ....)
使用范例:execl(“/bin/ls”, ”ls”, ”-al”, NULL)
int execlp(const char* file, const char* arg, ....)
使用范例:execlp(“ls”, ”ls”, ”-al”, NULL)
int execle(const char* fullpath, const char* arg, ...., char* const envp[])
使用范例:execle(“/bin/ls”, ”ls”, ”-al”, NULL, environ)
int execv(const char * fullpath, char* const argv[])
使用范例:execle(“/bin/mkdir”, argv) // int main(int argc, char* argv[])
或 char* const p[] = {"a.out" , "testDir", NULL};
execv("/bin/mkdir", p);
int execvp(const char* file, const char* arg, ....)
使用范例:execlp(“ls”, argv) // int main(int argc, char* argv[])
或 char* const p[] = {"a.out" , "testDir", NULL};
execvp("mkdir", p);
int execve(const char* fullpath, const char* arg, ...., char* const envp[])
使用范例:execve(“/bin/ls”, argv, environ)
或 char* const p[] = {"a.out" , "testDir", NULL};
execve("/bin/mkdir", p);
函数名中带有字母“l”的函数,其参数个数不定。其参数由所调用程序的命令行参数列表组成,最后一个NULL表示结束。函数名中带有字母“v”的函数,使用一个字符串数组指针argv指向参数列表,这一字符串数组和带有“l”的函数中的参数列表完全相同,同样以NULL结束。
函数名中带有“p”的函数可以自动在环境变量PATH指定的路径中搜索要执行的程序,因此它的第一个参数为filename表示可执行函数的文件名。而其它函数则需要用户在参数列表中指定该程序路径,其第一个函数pathname为路径名。
函数名中带有“e”的函数,比其它函数多了一个参数envp,该参数是字符串数组指针,用于制定环境变量。这个数组也必须是以NULL结束。其它函数则是直接使用当前环境变量。