当我这样做时(请注意包含的\n
):
printf("Something.\n");
我希望不来刷新缓冲区。我想稍后手动冲洗它 这可能吗?
This question有点问同样的问题,但问C ++而不是C.我不知道如何通过阅读这个问题的答案来收集如何在C中做到这一点(所以它& #39;不重复)。
答案 0 :(得分:2)
如评论中所述,setvbuf可用于更改任何文件流的缓冲,包括stdout
。
这是一个简单的例子:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
setvbuf(stdout, NULL, _IOFBF, 0);
printf("hello world\n");
sleep(5);
}
该示例使用setvbuf
使stdout
完全缓冲。这意味着它在遇到换行符时不会立即输出。该示例仅显示sleep
后的输出(退出时刷新)。如果没有setvbuf
,输出将显示在sleep
之前。