即使在 fflush 之后标准输出缓冲
stdout buffering even after fflush
我编写了一个简单的 C 程序,用于将 stdin
传送到 stdout
而无需缓冲字符:
#include <stdio.h>
int main (int argc, char *argv[])
{
int c;
while ((c = getchar()) != -1) {
putchar(c);
fflush(stdout);
}
return 0;
}
然而,尽管调用了 fflush
,该程序似乎仍在缓冲字符直到换行符。为什么会发生这种情况,我该如何解决(如果可能)?
在这种情况下,缓冲由终端驱动程序完成,它不会将输入发送到您的程序,直到您按下 ENTER。所以你的程序甚至没有得到任何字符,甚至没有调用 fflush()
。它只是在等待 getchar()
调用中的输入。
我编写了一个简单的 C 程序,用于将 stdin
传送到 stdout
而无需缓冲字符:
#include <stdio.h>
int main (int argc, char *argv[])
{
int c;
while ((c = getchar()) != -1) {
putchar(c);
fflush(stdout);
}
return 0;
}
然而,尽管调用了 fflush
,该程序似乎仍在缓冲字符直到换行符。为什么会发生这种情况,我该如何解决(如果可能)?
在这种情况下,缓冲由终端驱动程序完成,它不会将输入发送到您的程序,直到您按下 ENTER。所以你的程序甚至没有得到任何字符,甚至没有调用 fflush()
。它只是在等待 getchar()
调用中的输入。