execl()
int execl(const char *path, const char *arg, ...);
其中path是要重载的程序的路劲,后面的是程序需要的参数,最后一个参数需是NULL,才能重载.
路径一般写绝对路径,这个函数适用于自己编写的程序
execl("./myprog", "myprog", "arg1", "arg2", NULL);
execlp()
与execl()相比,区别主要在于可以根据系统的 PATH 环境变量来搜索可执行文件,比如各种指令,在Linux下一切均为文件,如果是重载系统指令,只需要写指令名即可
execlp("ls", "ls", "-l", "-a", NULL);
execle()
与execl相比,主要区别在于execle
函数能够额外传递一个环境变量数组,而execl
只能传递参数列表
char *envp[] = {"MYENV=custom_value", NULL};
execle("./myprog", "myprog", "arg1", "arg2", NULL, envp);
execv()
与execl()相比,主要区别在于参数传递的方式。使用execl()
时,需要手动将参数列出,而使用execv
时,需要构建一个字符串数组来传递参数
char *args[] = {"myprog", "arg1", "arg2", NULL};
execv("./myprog", args);
对于这几个长的比较像的函数,还是要分清一下