#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
int main(void)
{
pid_t resut;
resut=fork();
if(resut ==0)
{
printf(" this is in the child progress \n ");
printf("my father PID is %d \n", getppid());
printf("my PID is %d \n", getpid());
printf(" i will exec the ps cAommand \n");
// exit (0);
// if((execlp("ps","ps","-ef",NULL))<0)
// {
// printf(" this is erro \n");
// }
}
else if(resut>0)
{
printf(" this is in the father progress \n ");
printf("my chiled PID is %d \n", resut);
printf("my PID is %d \n", getpid());
sleep(10);// if father die ,but the child still live .the pid of father that the chidl want get by getppid() will erro
//exit(0);
}
return 0;
}
注意注释部分
如果我们取消注释可能会出现错我.
因为父进程可能先于子进程结束一因此getppid()不能正确获得PID
now 父进程运行完自己的代码就结束了,这就是父进程先于子进程完活.