exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。
exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程 ID 等一些表面上的信息仍保持原样,只有调用失败了,它们才会返回 -1,并设置errno,从原程序的调用点接着往下执行。
execl(“/bin/ps”, “ps”, “aux”, NULL);
execlp(“ps”, “ps”, “aux”, NULL);
exelp函数会到环境变量中查找指定的可执行文件,如果找到了就执行,找不到就执行不成功
int execv(const char *path, char *const argv[]);
argv是需要的参数的一个字符串数组:
char * argv[] = {“ps”, “aux”, NULL};
execv(“/bin/ps”, argv);
int execve(const char *filename, char *const argv[], char *const envp[]);
char * envp[] = {“/home/nowcoder”, “/home/bbb”, “/home/aaa”};
实际开发中常用execl和execv。
**system函数:**system(char *),执行完成后返回程序,继续流程;但是exec函数族不会回到原程序继续执行。
回程序,继续流程;但是exec函数族不会回到原程序继续执行。