Linux下的C编程问题,非常初级,请求解答.

源程序如下:
#include<stdio.h>
main()
{
int p1,p2;
while((p1=fork())==-1);
if(p1==0)
printf("child1\n");
else
{
while((p2=fork())==-1);
if(p2==0)
printf("child2\n");
else
printf("parent\n");
}
}
运行几次后会出现几种不同的结果:
child1 child1 child2
child2 parent child1
parent child2 parent
为什么会这样,还有几种不同的结果?出现这种情况如何解释
[428 byte] By [CHN_dralion-牵着你陪着我也只是曾经] at [2008-5-28]
# 1
会出现打印两次child1或者parent的情况吗?
奇怪.
顺序乱倒是很正常的,
因为几个进程在核心态运行的顺序本来就是不定的.
但是怎么会出现打印两次的情况呢?
tx117-TX117 at 2007-10-22 > top of Msdn China Tech,Linux/Unix社区,程序开发...
# 2
同意楼上的。
不过最多出现的是parent child1 child2
或child2 child1 parent
sunriver-sunriver at 2007-10-22 > top of Msdn China Tech,Linux/Unix社区,程序开发...
# 3
正常。多进程的抢夺处理器的表现。我的程序怎么就总是一种结果。书上也说多个结果是正常的
zhenshi-真世 at 2007-10-22 > top of Msdn China Tech,Linux/Unix社区,程序开发...