Linux应用程序--exec与system
文章摘要:
本文描述了基于Linux应用程序进程控制中的fork,wait,exec,system等函数的详细说明及应用场景。
execl/execlp/execle/execv/execvp/execve
l - 表示ArgList,需要将参数放入argv数组列表中传递;
v - 表示将参数拆分为单独项传递,需要以NULL做为最后一个参数;
p - 表示从环境变量PATH指明的路径中,寻找对应的可执行文件,不需要指明绝对路径;
e - 表示可以将指定环境变量参数传入(包括但不限于PATH)。
示例:
execl("/bin/ls", "ls", "-l", "/etc", NULL);
execlp("ls", "ls", "-l", "/etc", NULL);
char* args[] = {"ls", "-l", "/etc", NULL};
execv("/bin/ls", args);
execvp("ls",args);
char* envs[] = {"USER=unkonwn", "PATH=/bin", NULL};
execle("ls", "ls", "-l", "/etc", NULL, envs);
execve("ls", argv, envs);
注意事项: 第1个参数是可执行文件名。