免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ccf

fork的一个例子,好像人家是讲得很详细了,我还是不明白 [复制链接]

论坛徽章:
0
发表于 2004-04-28 03:30 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

问题是,结果显示是子进程先打印出自己的pid的,是不是子进程先于父进程执行了?

论坛徽章:
0
发表于 2004-04-28 09:16 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

到底哪个进程执行在先,这个和操作系统的调度算法等等很多因素相关。我觉得理解上的困难,关键在于为什么会有两个输出,而不是谁先谁后。

论坛徽章:
0
发表于 2004-04-28 12:35 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

fork之后,操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,但只有一点不同,如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。
可以这样想象,2个进程一直同时运行,而且步调一致,在fork之后,他们分别作不同的工作,也就是分岔了。这也是fork为什么叫fork的原因。
至于那一个最先运行,可能与操作系统有关,而且这个问题在实际应用中并不重要,如果需要父子进程协同,可以通过原语的办法解决。
luoting 该用户已被删除
发表于 2004-04-28 15:45 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2004-04-28 17:06 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

明白了,thanks a lot

论坛徽章:
0
发表于 2004-04-28 17:15 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

获益匪浅

论坛徽章:
0
发表于 2004-04-28 17:21 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

我在父进程里定义的变量,子进程在创建的时候回自动创建一个副本,那如果我在子进程里,就是pid==0里创建的变量,父进程是不是看不到呢,

就是两个进程不共享数据段的情况下,父进程在创建子进程的之前的变量自进程都能继承,但要是父进程在fork后创建的变量,子进程能继承吗???

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-04-28 17:25 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

它们已经是两个独立的进程了,
子进程怎么继承?

论坛徽章:
0
发表于 2004-04-28 17:42 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

原帖由 "lenovo" 发表:
它们已经是两个独立的进程了,
子进程怎么继承?



谢谢,就是说在fork前父进程的东西子进程可以继承,而在fork后子进程没有任何和父进程的继承关系了。在子进程里创建的东西是子进程的,在父进程创建的东西是父进程的。可以完全看成两个进程。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-04-28 19:46 |显示全部楼层

fork的一个例子,好像人家是讲得很详细了,我还是不明白

对。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP