#include stdiohmain int p1p2;whilep1=fork = = -1; 创建子进程p1if p1= =0 putcharb; else whilep2=fork = = -1; 创建子进程p2ifp2= =0 putcharc; else putchara;
这段代码的输出结果是不确定的,因为它涉及到进程的竞争条件,具体解释如下:
-
程序开始执行时,主进程会创建子进程p1,此时p1的执行状态未知。
-
如果p1创建成功,则p1会执行putchar('b'),输出一个字符'b'。
-
如果p1创建失败,则会进入while循环等待p1创建成功。
-
如果p1创建成功后,主进程会继续创建子进程p2,此时p2的执行状态未知。
-
如果p2创建成功,则p2会执行putchar('c'),输出一个字符'c'。
-
如果p2创建失败,则会进入while循环等待p2创建成功。
-
如果p2创建成功后,主进程会执行putchar('a'),输出一个字符'a'。
-
由于进程的执行顺序是不确定的,所以输出结果也是不确定的,可能是"abc",也可能是"acb"等等。
原文地址: http://www.cveoy.top/t/topic/djr7 著作权归作者所有。请勿转载和采集!