Linux下c语言编程exec函数使用

date: 2016.07.01; modification:2016.07.01

exec用被执行的程序完全替换调用它的程序的影像. fork创建一个新的进程就产生了一个新的PID, exec启动一个新程序, 替换原有的进程, 因此这个新的被exec执行的进程的PID不会改变, 和调用exec函数的进程一样.

下面来看下exec函数族:

#include <unistd.h>

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[]);

exec函数族装入并运行程序pathname, 并将参数arg0(arg1,arg2,argv[],envp[])传递给子程序, 出错返回-1. 在exec函数族中, 后缀l, v, p, e添加到exec后, 所指定的函数将具有某种操作能力有后缀:

例如:

execlp("mplayer", "", "-quiet", "/home/hello/a.mp4", NULL);