当前位置: 技术问答>linux和unix
连续fork两次创建几个进程
来源: 互联网 发布时间:2017-02-20
本文导语: 我的代码如下: #include #include #include main() { int p1,p2; p1=fork(); p2=fork(); if(p1==0){ printf("The child1 pid %dn",getpid()); } else{ printf(" parent1 pid %d,child1 pid %dn",getpid(),p1); wait(0); } if(p2==0){ printf("The child2...
我的代码如下:
#include
#include
#include
main()
{
int p1,p2;
p1=fork();
p2=fork();
if(p1==0){
printf("The child1 pid %dn",getpid());
}
else{
printf(" parent1 pid %d,child1 pid %dn",getpid(),p1);
wait(0);
}
if(p2==0){
printf("The child2 pid %dn",getpid());
}
else{
printf(" parent2 pid %d,child2 pid %dn",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”是怎么回事,这里我看不懂!
请教高手···
#include
#include
#include
main()
{
int p1,p2;
p1=fork();
p2=fork();
if(p1==0){
printf("The child1 pid %dn",getpid());
}
else{
printf(" parent1 pid %d,child1 pid %dn",getpid(),p1);
wait(0);
}
if(p2==0){
printf("The child2 pid %dn",getpid());
}
else{
printf(" parent2 pid %d,child2 pid %dn",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(); // 这句话会被两个进程都执行
p2=fork(); // 这句话会被两个进程都执行