分页: 1 / 1

= 嘿嘿,我又来了 ^_^ =

发表于 : 2007-04-10 17:42
DRIFT

代码: 全选

#include<stdio.h>
#include<time.h>

/* 自定义函数 echo() */
int
echo(int num)
{	int a,b;
	if(num==0)
		return 0;
	if(fork()==0)
	{	a=time((time_t*)NULL);
		exit(0);
	}
	b=time((time_t*)NULL);
	wait(NULL);
	printf("Chile's return is %d\tParent's return is %d\n",a,b);
	num-=1;
	echo(num);
}

/* 主函数 */
int
main()
{	echo(10);
	return 0;
}
执行结果为
Chile's return is 0 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 0 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212
Chile's return is 15956120 Parent's return is 1176198212


问题:
1- 我只递归调用了10次echo(),为什么会返回56次.

2- 为什么有时候返回的时间为"0".

发表于 : 2007-04-10 19:50
dbzhang800
注意一下fork的用法就好了

发表于 : 2007-04-11 13:08
DRIFT
dbzhang800 写了:注意一下fork的用法就好了
???

发表于 : 2007-04-11 13:24
laborer
fork用的没问题。不过你在父进程里面是不能直接访问子进程的变量a的。

发表于 : 2007-04-13 10:50
arthur
通过fork创建的新进程会继承父进程的所有变量,不过那是克隆出来的,其实是两组不同的变量,新进程修改变量不会影响父进程的变量,父进程修改变量同样也不会影响子进程的变量。

楼主的代码在我的机器上编译是只递归10次呀。

发表于 : 2007-04-14 18:19
DRIFT
哦.原来是这样.

谢谢大家的帮助 :o