关于进程问题

ShadowWonder 2013-11-08 12:30:15
   #include <stdio.h>
   main( )
   {
     int p1,p2;
     while((p1=fork( ))= = -1); /*创建子进程p1*/
     if (p1= =0) putchar('b');
     else
       {
          while((p2=fork( ))= = -1); /*创建子进程p2*/
          if(p2= =0) putchar('c');
          else putchar('a');
       }
   }

这个程序,实验指导书上说 abc,bac,cab,都有可能。

但我在ubuntu虚拟机下,任何情况都只有acb输出,有没有大神能够解释
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
5t4rk 2013-11-08
  • 打赏
  • 举报
回复
引用 3 楼 AnYidan 的回复:
[quote=引用 2 楼 max_min_ 的回复:] 输出几种可能性是因为fork函数无法确认父子进程,到底哪个进程先执行而已! 可能因为环境的不同,父子进程前后执行的顺序不同。 环境关乎操作系统,编译环境等条件,没有发生变化,所以结果也没有变!
++[/quote]
AnYidan 2013-11-08
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
输出几种可能性是因为fork函数无法确认父子进程,到底哪个进程先执行而已! 可能因为环境的不同,父子进程前后执行的顺序不同。 环境关乎操作系统,编译环境等条件,没有发生变化,所以结果也没有变!
++
max_min_ 2013-11-08
  • 打赏
  • 举报
回复
输出几种可能性是因为fork函数无法确认父子进程,到底哪个进程先执行而已! 可能因为环境的不同,父子进程前后执行的顺序不同。 环境关乎操作系统,编译环境等条件,没有发生变化,所以结果也没有变!
qzf362269994 2013-11-08
  • 打赏
  • 举报
回复
应该根据的编译器的调度算法吧

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧