c - 为什么带有 \n 的 printf() 仍然无法在 Windows 上刷新?
问题描述
我的 Windows 程序(使用 MSYS2 MINGW64 编译)以大块的形式输出其stdout
数据。带有 a的printf()
调用\n
无法正确刷新输出。
作为这个问题的一个变体,在什么情况下不printf()
刷新?
例如,以下代码在 MSYS2 MINGW64 上以块的形式输出:
#include <stdio.h>
int main() {
while(1) {
printf("test\n");
Sleep(1);
}
return 0;
}
解决方案
在 Windows 上没有行缓冲,只有没有和完全缓冲
_IOLBF
- 对于某些系统,这提供了行缓冲。但是,对于 Win32,其行为与
_IOFBF
- Full Buffering 相同。
等待一段时间,直到缓冲区已满,或者自己刷新缓冲区。或者,您可以减小缓冲区大小,setvbuf()
以便更频繁地刷新
推荐阅读
- php - PHP 不使用 XAMPP (Windows) 执行
- android - 如何获得三个 TextView 值?
- python-3.x - 是否可以根据实际上是单词数组的列中的文本对数据框进行排序?
- python-3.x - 如何使用 Python 查找 Dynamo 数据库数据
- python-pptx - 如何在python中更新pptx文件中的数据
- angular - 使用 AuthGuard 的不同角色的多个 /Dashboard 路由
- mysql - java EE Hibernate List many to many configure error
- navigation - Angular 7中基于角色的导航
- php - 获取 Microsoft Graph 的对象值
- javascript - 如何在 vue.js 和 laravel 中显示数组响应?