Cのautoflush(各書き込み後の標準出力のフラッシュ)に相当しますか?

StackOverflow https://stackoverflow.com/questions/214271

  •  03-07-2019
  •  | 
  •  

質問

Perlでは、次のように入力できます。

$|++;

およびSTDOUTに印刷されたものはすべて自動的にfflush()されます。

Cに同等のものはありますか?言い換えれば、printf()のたびにstdioを自動的にフラッシュするようにstdioに指示できる方法はありますか?

役に立ちましたか?

解決

setvbuf(stdout, NULL, _IONBF, 0)をお試しください。 stdoutをバッファなし(_IONBF)モードに変更します。

他のヒント

まだこれを行っていませんが、_IOLBFが正解です。

$ man setvbuf
...
NAME
setvbuf-バッファリングをストリームに割り当てます

シノプシス
#include <!> lt; stdio.h <!> gt;

   int setvbuf(FILE *restrict stream, char *restrict buf, int type,
          size_t size);

説明
setvbuf()関数は、streamが指すストリームが開いているファイルに関連付けられた後、他の操作(setvbuf()の呼び出しの失敗以外)が実行される前に使用できます。        ストリーム。引数のタイプは、次のようにストリームのバッファ方法を決定します。

    * {_IOFBF} shall cause input/output to be fully buffered.

    * {_IOLBF} shall cause input/output to be line buffered.

    * {_IONBF} shall cause input/output to be unbuffered.

setbuf()およびsetvbuf()を見てください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top