日期:2014-05-16  浏览次数:20676 次

连续fork两次创建几个进程
我的代码如下:

#include<stdio.h>
#include<unistd.h>
#include <sys/types.h>
main()
{
 int p1,p2;
 p1=fork();
 p2=fork();
 if(p1==0){
 printf("The child1 pid %d\n",getpid());
}
 else{
   printf(" parent1 pid %d,child1 pid %d\n",getpid(),p1);
   wait(0);
}
 if(p2==0){
 printf("The child2 pid %d\n",getpid());
}
 else{
   printf(" parent2 pid %d,child2 pid %d\n",getpid(),p2);
   wait(0);
}

 return 0;
}


 运行结果是:
 parent1 pid 5728,child1 pid 5424
 parent1 pid 5364,child1 pid 5424
 The child2 pid 5364
 parent2 pid 5728,child2 pid 5364
 The child1 pid 5424 The child1 pid 4752
 parent2 pid 5424,child2 pid 4752 The child2 pid 4752


从结果来看是创建了4个进程,父进程5728创建了子进程5424和5364,子进程5424又作为父进程创建了子进程4752,可是
“parent1 pid 5364,child1 pid 5424”是怎么回事,这里我看不懂!

 请教高手···

------解决方案--------------------
 p1=fork();  // 这句话之后,就有两个进程了
 p2=fork();  // 这句话会被两个进程都执行