请教一下 fork的问题

软件和网站开发以及相关技术探讨
回复
jacsy
帖子: 50
注册时间: 2006-11-03 23:41

请教一下 fork的问题

#1

帖子 jacsy » 2008-11-19 9:41

代码: 全选

#include<stdio.h>
int main(void)
{
	int pid,pid2,i;
	while((pid=fork())==-1);
	if(pid==0)
		for(i=0;i<10;i++)
            printf("son   %d\n",i);
	else
	{
		while((pid2=fork())==-1);
		if(pid2==0)
			for(i=0;i<10;i++)
                printf("son   %d\n",i);
		else
			for(i=0;i<10;i++)
                printf("father   %d\n",i);
	}
	return 0;
}
运行只段代码怎么就只有一个结果呢?

代码: 全选

son   0
son   1
son   2
son   3
son   4
son   5
son   6
son   7
son   8
son   9
son   0
son   1
son   2
son   3
son   4
son   5
son   6
son   7
son   8
son   9
father   0
father   1
father   2
father   3
father   4
father   5
father   6
father   7
father   8
father   9
怎么不是
parent…
son…
daughter..
daughter..
或parent…
son…
parent…
daughter…等
呢?
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 请教一下 fork的问题

#2

帖子 xhy » 2008-11-19 11:07

执行次数太少了,一次时间片内就能完成输出。

父子进程谁先执行,只能说依赖具体的实现,某些固定条件下,顺序是一定的。
目前负债150多万
jacsy
帖子: 50
注册时间: 2006-11-03 23:41

Re: 请教一下 fork的问题

#3

帖子 jacsy » 2008-11-19 11:27

xhy 写了:执行次数太少了,一次时间片内就能完成输出。

父子进程谁先执行,只能说依赖具体的实现,某些固定条件下,顺序是一定的。
了解了,循环1000次后看到了不同的结果 :em38
头像
CLOCKWORKHEART
帖子: 635
注册时间: 2007-11-05 19:26

Re: 请教一下 fork的问题

#4

帖子 CLOCKWORKHEART » 2008-11-19 21:15

xhy 写了:执行次数太少了,一次时间片内就能完成输出。

父子进程谁先执行,只能说依赖具体的实现,某些固定条件下,顺序是一定的。
牛人,一语道破天机 :em38
Everything that has a beginning has an end.
混沌思维
帖子: 18
注册时间: 2008-10-07 1:13

Re: 请教一下 fork的问题

#5

帖子 混沌思维 » 2008-11-21 12:23

由于是堆栈的形式,所以先执行父进程,再执行子进程。
回复