exec()函数族疑问,输出不是预料的结果

有两个C源代码文件test.c和file.c

test.c代码如下:
#include
#include
#include
int main(int argc, char argv[])
{
if(0==fork())
{
printf("a");
execlp("./file",(char
)NULL);
}
else
{ wait(NULL);
printf("b);
}

return 0;

}

file.c代码如下:
#include

int main(void)
{
printf("c");
return 0;
}

我先gcc file.c -o file
然后gcc test.c -o test
输出bc
但是将test.c中的printf("a");改为printf("a\n");之后就输出abc;
我的疑问就在于:为什么加了\n之后,就能输出a,而没有加\n就不能输出a
???实在不解!!!

因为你没加/n的时候输出的a被b覆盖了

这就叫做行缓存的机制

图片说明

\n 会刷新缓冲区,使得a输出,不然不会,使用fflsuh(stdout);好像也可以,。。

代码test.c

代码test.c