0

文字をバッファリングせずにパイプstdinすることを目的とした単純なCプログラムを作成しました。stdout

#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 に答える