关于进程问题
#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输出,有没有大神能够解释 进程
[解决办法]
输出几种可能性是因为fork函数无法确认父子进程,到底哪个进程先执行而已!
可能因为环境的不同,父子进程前后执行的顺序不同。
环境关乎操作系统,编译环境等条件,没有发生变化,所以结果也没有变!