答えて
出力バッファをフラッシュしないと聞いたことはありません。私はあなたのソースを聞くことに興味があります。出力バッファのフラッシュ:
printf("Buffered, will be flushed");
fflush(stdout); // Prints to screen or whatever your standard out is
または
fprintf(fd, "Buffered, will be flushed");
fflush(fd); //Prints to a file
することは非常に有用な技術であることができます。なぜ出力バッファをフラッシュしたいのですか?通常、私はそれを行うとき、コードがクラッシュしているので、私は何かをデバッグしようとしています。 printf()
を呼び出すたびに標準バッファーは印刷されません。バッファーがいっぱいになるまで待ってから一度にダンプします。したがって、クラッシュする前に関数呼び出しを行っているかどうかを確認しようとしている場合は、printf
のようなものが役に立つでしょう。また、クラッシュが発生する前にバッファがフラッシュされていないことがあります。あなたが本当にどのくらい離れているかを教えてください。
もう1つの時間は、マルチプロセスまたはマルチスレッドのコードです。繰り返しますが、バッファがprintf()
の呼び出しで必ずしもフラッシュするとは限りません。したがって、複数のプロセスの実際の実行順序を知りたい場合は、印刷ごとにバッファをfflushする必要があります。
私はそれを行う習慣を作る、それは私に多くの頭痛をデバッグに保存します。私が考えることができる唯一の欠点は、printf()
が高価な操作(デフォルトではバッファをフラッシュしない理由です)です。
は限り入力バッファ(stdin
)をフラッシュするとして、あなたはそれを行うべきではありません。フラッシングstdin
はC11標準に従って未定義の動作である§7.21.5.2パート2:
出力ストリームにストリームポイントは... fflush関数は、そのストリームのための任意の未書き込みデータが発生した場合...に書き込まれますファイル;それ以外の場合、動作は未定義です。いくつかのシステムでは
は、あなたがfflush()
のmanページで見ることができるようにLinuxは一つである、定義された動作がありますが、あなたのコードがポータブルではありませんので、それはシステムに依存します。
ここで、入力バッファに「ゴミが残っている」ことが気になる場合は、fpurge()
を使用してください。 fflush()
とfpurge()
ありがとう! stdin(またはその他のバッファ)はどうですか? – saadtaame
私の編集を参照してください。 – Mike
'fflush(stdin)'を使うことは、VS08/10では間違いなく機能します。それが「明確に定義されている」かどうかはわかりません。私はLinux上ではうまくいかないと確信しているので、VSの "修正"かもしれません。 – ChiefTwoPencils
- 1. Perl STDINバッファをフラッシュする
- 2. NSLogのバッファをどのようにフラッシュするのですか?
- 3. PHPエラー:ob_flush()[ref.outcontrol]:バッファのフラッシュに失敗しました。フラッシュするバッファがありません
- 4. 通信の受信バッファをフラッシュしますか?
- 5. バッファがフラッシュされているかどうかのテストR
- 6. Erlangでioバッファをフラッシュする方法は?
- 7. メモリプールとバッファC++
- 8. linuxの下でのC++のフラッシュ
- 9. expectスクリプトで入力バッファをどのようにフラッシュできますか?
- 10. 複数のバッファ管理をCで
- 11. C&Libevent:出力バッファ
- 12. Cのバッファの部分をコピーする
- 13. 動的文字バッファC
- 14. coutバッファをクリアする(C++)
- 15. boost python - C++ std :: stringへのpythonバッファ
- 16. バッファにC++で追加する
- 17. byte []バッファまたは参照/ポインタ? C#で
- 18. SSLでのフラッシュ
- 19. C#からC++にrecv()とsend()のためのバッファを渡す
- 20. Twistedのtwisted.webクラスを使用して、送信バッファをどのようにフラッシュするのですか?
- 21. C/C++からメモリにバッファを書き込み、JNIなしでJavaでバッファを読み込みます。
- 22. JavascriptからC++への文字列ポインタ-JSCTypesでのLPSTRバッファ
- 23. SSL書き込みバッファをフラッシュする方法はありません
- 24. バッファの長さとバッファのソケット上での送信
- 25. 標準のistreamバッファをC++で読むには?
- 26. cでこのバッファ値を返す方法は?
- 27. フラッシュでのカメラストリームの問題
- 28. 整数をバッファにコピーするmemcpy C++
- 29. C + OpenCV:循環バッファ付きIplImage
- 30. バッファから読み込みC
の詳細についてhereが、ちょうどそのにfflushのみ出力ストリーム用に明確に定義されている注意してください、それは入力ストリームに対して使用することはできません。それは未定義の動作になります。 – Lundin
@ Lundin出力ストリームをフラッシュするのにそれを使用するのもいいですか? – saadtaame
@saadtaameはい、それはまさに 'fflush()'の目的です。 – Mysticial