LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1185|回复: 4

循环中的fork怎么有这种结果

[复制链接]
发表于 2006-2-20 15:10:40 | 显示全部楼层 |阅读模式

  1. #include <unistd.h>
  2. #include <sys/types.h>
  3. int main()
  4. {
  5.         int i;
  6.         for(i=0;i<3;i++)
  7.         {
  8.                 pid_t pd = fork();
  9.                 if(pd == -1)
  10.                 {
  11.                         abort();
  12.                 }
  13.                 else if(pd == 0)
  14.                 {
  15.                         puts("In child!");
  16.                 }
  17.                 else
  18.                 {
  19.                         puts("In parent!");
  20.                 }
  21.         }
  22.         while (1) {};
  23. }
复制代码

本来期待出现三次In child,三次In parent。谁知道各出现了7次,请问这是什么原因?
发表于 2006-2-20 15:27:07 | 显示全部楼层
在pd == 0
中加入 return 0;
就好了
其实 你的进程是1变2 2变4
子进程会继承父进程的一些操作

再深的理论 就说不清楚了
回复 支持 反对

使用道具 举报

发表于 2006-2-20 16:54:32 | 显示全部楼层
哈哈
链式反应
杨辉三角
回复 支持 反对

使用道具 举报

发表于 2006-2-20 17:34:37 | 显示全部楼层
1+1*2^1+1*2^2=1+2+4=7,呵呵。
回复 支持 反对

使用道具 举报

发表于 2006-2-20 18:32:42 | 显示全部楼层
我在这里常用goto来做循环。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表