exec

int execve(const char* pathname,char* const argv[],char * const envp[]);

pathname 是新程序的路径,argv是传递给新程序的命令行参数,envp指定了新程序的环境列表。

调用execve()可以将新程序加载到某一进程的内存空间,并且丢弃旧的程序(进程依然是原来的进程),进程的栈,数据以及堆都会被新程序的给替换掉。且默认情况下,旧程序打开的所有文件描述符在新程序中依然有效。

以下的函数均构建于execve()之上:

execle(), execlp(),execvp(),execv(),execl()

 execlp()和execvp()允许只提供程序的文件名,系统到PATH指定目录列表中寻找相应执行文件

execle(),execlp(),execl()要求开发者在调用中以字符串列表形式来指定参数,首个参数对应argv[0];

execve()和execle()允许开发者通过envp为新程序指定环境变量。而其余的则以当前环境作为新程序的环境。

你可能感兴趣的:(exec)