Cのautoflush(各書き込み後の標準出力のフラッシュ)に相当しますか?
質問
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()を見てください。
所属していません StackOverflow