码迷,mamicode.com
首页 > 系统相关 > 详细

最诡异的Linux fork进程问题(我们平时都在写)

时间:2014-11-06 23:32:34      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:io   sp   for   问题   代码   bs   ef   linux   程序   

  从来没有遇到过。。。

  运行环境:在Linux自带的文本编辑器中输入C程序,在shell中编译运行,下面直接看代码和运行结果。

第一个代码:#include<stdio.h>

      #include<stdlib.h>

      #include<unistd.h>

      #define N 2

      int main()

      {

        int i;

        pid_t pid;

        for(i = 0; i < N; i++)

        {

          pid = fork();

          if(pid == 0)

          {

            printf(" %d ",  0);

            exit(100+i);

          }

          else

flag:         printf(" %d ",  pid);

        }

        printf("over\n");

        exit(0);

      }

结果是:  0  2571  0  2571  2572  over

  第一段的结果在想了很久之后都没能想通,为什么第二个0后面会输出两个数呢?然后准备在flag标记的那个printf后加个"\n"让其格式整齐一点发到博客园上问大家呢,结果加了“\n”后输出的结果却是下面我写的那样,更迷糊了,希望哪位大侠知道帮忙解答一下。

第二段:把第一段的flag那行改为printf(" %d\n", getpid(), pid);

结果为:  0    2598

      0    2599

    over

 

最诡异的Linux fork进程问题(我们平时都在写)

标签:io   sp   for   问题   代码   bs   ef   linux   程序   

原文地址:http://www.cnblogs.com/yilinglingyi/p/4080118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!