//exec函数簇
//lexec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的
//内容,换句话说,就是在调用进程内部执行一个可执行文件。
/*
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 execvpe( const char *file, char *const argv[],char * const envp[]);
l(list) -参数地址列表,以空指针结尾
v(vector) -存有各参数地址的指针数组的地址
p(path) -按PATH 环境变量指定的目录搜索可执行文件
e(environment) -存有环境变量字符串地址的指针数组的地址
*/
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
pid_t pid = fork();
if(pid == -1)
{
perror("fork");
exit(1);
}else if(pid > 0)
{
printf("我是父进程,pid==%d\n",getpid());
sleep(1);
}else
{
execlp("ps","ps","-aux",NULL);
printf("我是子进程,pid==%d\n",getpid());
}
return 0;
}
execl和execlp的区别:
-execlp会到环境变量中查找指定的可执行文件,如果找到了就执行,找不到就执行不成功
查看当前环境变量