hello.c(/home/hc/lesson19)
#include <stdio.h>
int main(){
printf("hello,world!\n");
return 0;
}
execlp.c(/home/hc/lesson19)
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
int main(){
printf("execlp!\n");
execlp("hello","hello",NULL);
return 0;
}
execve.c
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
int main(){
pid_t pt = fork();
if(pt>0){
printf("i am father, pid = %d\n",getpid());
sleep(1);
}else if(pt == 0){
char * argv[] = {"execlp",NULL};
char * envp[] = {"PATH=/home/hc/lesson19", NULL};
execve("/home/hc/lesson19/execlp",argv,envp);//第一个参数要把地址写全,此时并没有新加入的环境变量,第三个参数是将某某地址加入环境变量,所以后面在执行execlp可以直接写hello
printf("i am child, pid = %d\n",getpid());
}
for(int i=0;i<3;i++){
printf("i = %d, pid = %d\n",i, getpid());
}
return 0;
}