#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');eleputchar('a');}}为什么我的输出都是acb呢,会有abc这种情况吗?求详细解释对了我的那个第一个while((p1=fork)<0)题目漏写了sorry
2 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
fork()创建一个子进程,fork()进入内核,调用一次返回两次,如果返回的pid == 0子进程先返回,如果pid > 0(此时返回的是子进程的pid),父进程先返回。至于子进程和父进程哪个先返回,要看内核的调度算法。输出次序乱序,都有可能。父进程和子进程是并发执行的。
慕的地8271018
TA贡献1796条经验 获得超4个赞
我不知道你的编译器是什么 但是你的代码有些问题 while(p1=fork())这个条件在gcc下会进入死循环
而且 while((p2=fork())<0);这个只是对P2=fork()赋值正确与否进行判断
添加回答
举报
0/150
提交
取消