【初心者歓迎】C/C++室 Ver.40【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.40【環境依存OK】 - 暇つぶし2ch116:デフォルトの名無しさん
07/07/20 11:01:57
>>112
その辺は微妙な話だと思う。
stdoutは端末に結び付けられている場合は行バッファリングされ、
そうでない場合はフルバッファリングされるのが伝統的実装のようだが、
規格でそうしろと決まっているわけでもないようだ。
stderrがバッファリングなしというのは決まっていたはずだが。

さらに、入力を行う際は、行バッファリングされている出力を
前もってフラッシュすることになっていたと思うが、よく分からん。
stdoutが行バッファリングされている場合に、>>112のような
コードで、改行なしのプロンプトを表示後に入力できるためには、
そうなっていなければならないのだが。
もしかしたら、>>112の環境ではstdoutがフルバッファリングされているのかもな。

確実に即座に出力を表示したい場合は、stderrを使うというのが一つの手だが、
いちいち fprintf(stderr, ...) と書きたくないのなら、
setvbuf()を使ってstdoutをバッファリングなしに設定するという方法もある。

stdoutはリダイレクトされることもあるのだから、できれば
isatty()などを用いて標準出力が端末かどうかを見たほうが良いのだが、
残念ながらこの方法は移植性があるとは言えないのが難点だ。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch