· 当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用exec函数族中的任意一个函数让自己重生;
· 如果一个进程想执行另一个程序,那么它就可以调用fork()函数新建一个进程,然后调用exec函数族中的任意一个函数,这样看起来就像通过执行应用程序而产生了一个新进程(这种情况非常普遍)。
/*execlp.c*/
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
if(fork()==0)
{
/*调用execlp()函数,这里相当于调用了ps-ef命令*/
if((ret=execlp("ps","ps","-ef",NULL))<0)
printf("Execlp error\n");
}
}
Int execl(const char *path,const *arg,…)
1、 查找方式
2、 参数传递方式
3、 环境变量
/*execve.c*/
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
/*命令参数列表,必须以NULL结尾*/
char *arg[]={"env",NULL};
char *envp[]={"PATH=/tmp","USER=why",NULL};
if(fork()==0)
{
if(execve("/usr/bin/env",arg,envp)<0)
printf("Execlp error\n");
}
}