连续4个fork()函数输出的结果???

软件和网站开发以及相关技术探讨
回复
wewe12
帖子: 54
注册时间: 2007-08-27 16:19

连续4个fork()函数输出的结果???

#1

帖子 wewe12 » 2007-11-21 13:09

#include<stdio.h>
int main()
{
fork();
fork();
fork();
fork();
printf("A\n");
}


GCC编译后的结果!
A
A
A
[root@local host root]#A
A
A
A
A
A
A
A
A
A
A
A
A


另外一个程序!
include<stdio.h>
int main()
{
int i,pid;
pid=fork();
if(pid==0)
{
for(i=0;i<5;i++)
{
printf("I am child\n");
sleep();
}
}
if(pid>0)
{
fot(i=0;i<5;i++)
{
printf("I am parent\n");
sleep();
}
}
else
printf("error\n");
}
GCC编译结果
I am child
I am parent
I am parent
I am child
I am parent
I am child
I am parent
I am child
I am parent
I am child

以上结果哪位仁兄有点合理的解释!!!
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#2

帖子 猛将兄 » 2007-11-22 7:39

fork()之后,子进程执行在fork之后的代码,这样不停地代码段复制到子进程
自己画画进程树就好了。如果你在最后加一个getch()并且让每个进程打印出自己的id和父进程id,你就很清楚了
回复