linux下的fork()运用?

#include<stdio.h>
main()
{
int p1,p2;
while((p1=fork()));
if(p1==0)
putchar('b);
else
{
while((p2=fork())<0);
if(p2==0)
putchar('c');
ele
putchar('a');
}
}
为什么我的输出都是acb呢,会有abc这种情况吗?求详细解释
对了我的那个第一个while((p1=fork)<0)题目漏写了sorry

慕标琳琳
浏览 307回答 2
2回答

神不在的星期二

fork()创建一个子进程,fork()进入内核,调用一次返回两次,如果返回的pid == 0子进程先返回,如果pid > 0(此时返回的是子进程的pid),父进程先返回。至于子进程和父进程哪个先返回,要看内核的调度算法。输出次序乱序,都有可能。父进程和子进程是并发执行的。

慕的地8271018

我不知道你的编译器是什么 但是你的代码有些问题 while(p1=fork())这个条件在gcc下会进入死循环而且 while((p2=fork())<0);这个只是对P2=fork()赋值正确与否进行判断
打开App,查看更多内容
随时随地看视频慕课网APP