0

我编写了一个简单的 C 程序,它可以stdinstdout不缓冲字符的情况下进行管道传输:

#include <stdio.h>

int main (int argc, char *argv[])
{
  int c;

  while ((c = getchar()) != -1) {
    putchar(c);
    fflush(stdout);
  }

  return 0;
}

但是,尽管调用了fflush. 为什么会发生这种情况,我该如何解决(如果可能)?

4

1 回答 1

1

在这种情况下,缓冲由终端驱动程序完成,它不会将输入发送到您的程序,直到您按下ENTER。所以你的程序甚至没有得到任何字符,fflush()甚至没有被调用。它只是在等待getchar()通话中的输入。

于 2015-06-27T10:44:04.180 回答