我已经编写了一个类似下面的
printf()
语句:printf("hello\n");
当使用Linux的gcc编译器构建时,这段代码可以正常工作。然而,如果我写
printf("hello");
打印内容未出现在屏幕上。似乎有一些缓冲机制?有人能给我更多信息吗?
尝试使用fflush()调用。通常向屏幕或文件写入数据非常昂贵,因此数据会被缓存直到需要写入。一般来说,一个 \n 就足够了(缓冲区通常只是存储一行),但如果您需要刷新缓冲区,请使用该刷新调用。
我在这里发布了关于Windows上无缓冲IO的问题:链接
但它实际上是使用标准的C函数调用setvbuf来实现的。
setvbuf(stdout, (char *)NULL, _IONBF, 0); //unbuffered stdout