子进程问题
- C/C++ code
#include<stdio.h> main() { int p1; putchar('x'); //父子共享部分,都要输出'x' while((p1=fork()) == -1); if(p1==0) putchar('b'); //子进程输出'b' else putchar('a'); //父进程输出'a' putchar('y'); //父子共享部分,都要输出'y' }
为什么输出结果是xbyxay,求解释
LS的正解。
标准输出/输入都是行缓冲问题,只有遇到回车才输出。
fork()后,会把父进程的缓冲区内容复制到子进程中。 于是输出了两个x。
至于fork后是子进程先运行,还是父进程先运行是不确定的。
程序运行完后,才会关闭你文件流,此时才输出。