LINUX 循环fork()
发布日期:2021-07-01 01:03:58 浏览次数:2 分类:技术文章

本文共 510 字,大约阅读时间需要 1 分钟。

#include <sys/types.h>

  #include <unistd.h>
  int main()
  {
            for(int i = 0; i < 3; i ++)
      {
              int pid = fork();
              if(pid == 0)
              {
                   printf("child\n");
               }
               else
               {
                    printf("father\n");
                }
       }
   return 0;
  }
  请问输出结果是什么?
  初看,想当然认为结果是3对child-father,只是顺序不确定,而且按照Unix环境高级编程中的说法,极端的情况下可能还会出现两个输出的内容相互夹杂的情况。
  但是,在Unix测试了一下发现输出竟然有7对child-father。为什么会这样呢?看了半天程序终于明白了这个简单的问题。其实,这个问题在写/懂汇编的人看来是再清楚不过了,问题就出在这个for循环。
  1.i=0时,父进程进入for循环,此时由于fork的作用,产生父子两个进程(分别记为F0/S0),分别输出father和child,然后,二者分别执行后续的代码&

转载地址:https://mao0514.blog.csdn.net/article/details/22420923 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用串口下载vxworks映象的方法
下一篇:一种在BIOS中嵌入应用程序的方法及实现

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年05月07日 01时32分48秒