exec函数族:
使进程执行某一程序。成功无返回值,失败返回 -1
int execlp(const char *file, const char *arg, ...); 借助 PATH 环境变量找寻待执行程序
参1: 程序名
参2: argv0
参3: argv1
...: argvN
哨兵:NULL
int execl(const char *path, const char *arg, ...); 自己指定待执行程序路径。
int execvp();
ps ajx --> pid ppid gid sid
#include<stdio.h>
#include<unistd.h>
int main(void)
{
//使用execl() 来调用其他的程序
execlp("ls","ls","-a","-l",NULL); // 相当于在程序中调用ls 命令
printf("error execlp");
return 0;
}
execvp函数
加载一个进程,使用自定义环境变量 env
Int execvp( const char* file , const char *argv[] );
变参形式:
(1)...
(2)argv[] ( main 函数也是变参函数,形式上等于 int main( int argc , char* argv0,... ) )
变参终止条件:(1)NULL结尾 (2)参数固定
execvp 于 execlp 参数形式不同,原理一致。
Char *argv[] = { "ls","-a","-l",NULL};
Execvp(ls,argv);
exec函数族的一般规律,exec函数一旦调用成功及执行新的程序,不返回。只有失败的时候才返回,错误值-1。
L (list) 命令行参数列表 execl()
P( path ) 搜索文件用的path变量
V( vector ) 使用命令行参数数组 execvp()
E( environment ) 使用环境变量数组,不适用进程原来的环境变量,设置加载程序运行的环境变量。