免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1603 | 回复: 6

关于fork()的问题 [复制链接]

论坛徽章:
0
发表于 2012-04-13 14:40 |显示全部楼层
遇到一个程序 ,看了半天还是不明白这样写的用途


int  i = 0;

for(i=0;i < 5; i++)
  {
     if (  (pid=fork())  <=0)
         break;
  }

if (pid == 0)
{
    dosomething ;

}
else if(pid  > 0 )
   
{
        while((waitpid(-1,0,NULL))> 0);
}

这样写的目的是什么?  
存在的情况:
pid < 0         pid ==0  语句不执行
pid =0         pid ==0 执行
pid >0        难到是父进程在 循环 fork 一个!  若内核每次出来的都是父进程,  则fork 5个子进程 ,那么 dosomething 执行5次??

不理解 这样编码的目的, 请大家指导一下!









pid



论坛徽章:
0
发表于 2012-04-13 18:21 |显示全部楼层
本帖最后由 lzvsjf 于 2012-04-13 18:22 编辑

父进程会创建五个子线程,目的是为了同时并行的执行五个do something,仅此而已。
父进程——>子进程1 do something
      
         ——>子进程2 do something

               ——>子进程3 do something

                  ——>子进程4 do something

                     ——>子进程5 do something

当所有子进程都执行完了之后父进程才继续运行或者退出

论坛徽章:
0
发表于 2012-04-14 12:57 |显示全部楼层
就是创建5个子进程,然后父进程在那傻傻地等待所有子进程退出,仅此而已。。。。。。

论坛徽章:
0
发表于 2012-04-14 19:47 |显示全部楼层
直接man fork,查看返回值的意义……

论坛徽章:
0
发表于 2012-04-15 13:26 |显示全部楼层
lzvsjf 发表于 2012-04-13 18:21
父进程会创建五个子线程,目的是为了同时并行的执行五个do something,仅此而已。
父进程——>子进程1 do  ...

正解!

论坛徽章:
0
发表于 2012-04-19 14:08 |显示全部楼层
谢谢,那天有点看晕了, 在加上 记得不牢靠。 看别人的代码, 有点受罪啊~~~呵呵!~~ 要明白别人 意图!~~ 有点困难

论坛徽章:
0
发表于 2012-04-19 14:09 |显示全部楼层
谢谢,大家耐心的指导 ~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP