- 论坛徽章:
- 0
|
父进程和子进程的问题
程序1:
main()
{
int p1,i;
while ((p1=fork())==-1);
if (p1>0)
for (i=0;i<5;i++)
{
printf("I am parent.\n");
sleep(1);
}
else
for (i=0;i<5;i++)
{
printf("I am child.\n");
sleep(1);
}
}
程序1,反复执行多次,都是同样的结果:
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.
程序2:
main()
{
int p1,i;
while ((p1=fork())==-1);
if (p1>0)
for (i=0;i<5;i++)
{
sleep(1);
printf("I am parent.\n");
}
else
for (i=0;i<5;i++)
{
sleep(1);
printf("I am child.\n");
}
}
程序2反复执行多次,也都是同样的结果:
I am parent.
I am child.
I am parent.
I am child.
I am parent.
I am child.
I am parent.
I am child.
I am parent.
I am child.
问题1:程序1和程序2都是关于fork()的实验,父进程和子进程是并发执行,为什么我反复执行多次,程序1和程序2的输出结果都是不变的?按理说,程序1的结果有可能parent在前,程序2的结果有可能child在前。可是我执行了很多次,它们的结果都没有变过。这应该如何解释呢?
问题2:在程序1的结果中,前三行为什么会输出一行child输出二行parent?如何解释?
请版主不要给我合帖,这是新问题。
谢谢! |
|