将 C 程序设置为行缓冲区不起作用
我试图强制我的 C 程序进行行缓冲(stdout 将由 java 程序捕获),但它似乎总是完全缓冲。这是一些示例代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
char c;
setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
printf("Hello world\n");
c = getchar();
printf("got char: %c\n", c);
}
如果我指定 _IOLBF 或 _IOFBF,那么在输入字符之前我看不到输出。仅当我使用 _IONBF 时,我才会在 getchar() 之前看到输出。既然“Hello World\n”包含“\n”,_IOLBF 不应该做同样的事情吗?
我正在使用 Visual C++ 2005。
谢谢
I'm trying to force my C program to line buffer (stdout is going to be captured by a java program), but it always seems to fully buffer instead. Here is some sample code:
#include <stdio.h>
#include <stdlib.h>
int main(){
char c;
setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
printf("Hello world\n");
c = getchar();
printf("got char: %c\n", c);
}
If I specify _IOLBF or _IOFBF, then I don't see an output until I input a char. Only if I use _IONBF will I see output before the getchar(). Shouldn't _IOLBF do the same since "Hello World\n" contains a '\n'?
I am using visual c++ 2005.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据此 Microsoft 文档:
According to this Microsoft documentation: