有两个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);好像也可以,。。