免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2335 | 回复: 6
打印 上一主题 下一主题

fork的问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-08 10:45 |只看该作者 |倒序浏览
fork一次后,会生成一个子程序,如果我循环两次,为什么会生产3个子程序呢?
for($i=0;$i<2;$i++){
    if($pid=fork())
        {
            $test{$pid}=$pid;
        }
      else
        {
           ;  
        }

}
foreach(keys %test){
  print "=>$_\n";
}


执行结果
mrtg# ./thead.pl
=>18414
=>18415
=>18416
=>18414



请问,这如何理解啊?有点晕了.....

谢谢解答!!!!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2008-08-08 10:48 |只看该作者
子又生孙,孙又生子,子子孙孙无穷尽也。

论坛徽章:
0
3 [报告]
发表于 2008-08-08 10:55 |只看该作者
不明白.我的fork应该是在父进程执行的吧....应该生产的还是子进程吧!!!!!
望指点....

论坛徽章:
0
4 [报告]
发表于 2008-08-08 11:17 |只看该作者

回复 #3 hahazhu0634 的帖子

第一次循环后fork出来的子进程在第二次循环中依然可以fork
第一次fork的结果是产生进程a b (b由a fork而来)
a b 都会继续执行第二次循环
所以又fork出来两个进程
所以一共是四个
你可以画个Process graph看一下(这个在csapp中讲述的很详细)

论坛徽章:
0
5 [报告]
发表于 2008-08-08 14:59 |只看该作者
那第二次循环后,应该是a c喽....父进程PID是不变的,对吧?

论坛徽章:
0
6 [报告]
发表于 2008-08-08 15:00 |只看该作者
对了,兄弟提的csapp,是什么啊?能否给个链接,或者其他详细点的资料啊?
感谢!!!!!

论坛徽章:
0
7 [报告]
发表于 2008-08-08 19:23 |只看该作者

回复 #6 hahazhu0634 的帖子

Computer architecture
--- From a program's perspective
中文叫深入理解计算机体系

挺好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP