アカウント名:
パスワード:
・C言語の高水準入出力 printf(3) とか fputs(3) で出力した内容はキャッシュされるので fclose(3) とか fflush(3) とかで吐き出して戻り値を確認しないと正常に出力されたことは保証されない。・exit(3) なり main() からの return で暗黙にフラッシュした場合はエラーチェックできないので、失敗してもわからない。
というのは基本仕様なので知っとく必要がある。/dev/full とかだけでなく、write(2)で発生するあらゆるエラーの可能性がある。
それはCの話なのかUnixの話なのかオーエス全般の話なのか…ショリケイイゾンテクソダナ
バッファキャッシュの問題はC言語の実装の話。正確には libc にある C言語の標準関数の実装の話。
Cの規格では(1)バッファされる(2)バッファされない(3)ラインバッファ(テキストのみ)の3種類が挙げられていて、そのどれかは処理系に依存する。エラー処理的には(1)を想定したほうがいいので、元コメントは完全に正しい。
stderrはバッファされないと書いてあったかな。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
/dev/full 関係ないじゃん。 (スコア:5, すばらしい洞察)
・C言語の高水準入出力 printf(3) とか fputs(3) で出力した内容はキャッシュされるので fclose(3) とか fflush(3) とかで吐き出して戻り値を確認しないと正常に出力されたことは保証されない。
・exit(3) なり main() からの return で暗黙にフラッシュした場合はエラーチェックできないので、失敗してもわからない。
というのは基本仕様なので知っとく必要がある。
/dev/full とかだけでなく、write(2)で発生するあらゆるエラーの可能性がある。
Re:/dev/full 関係ないじゃん。 (スコア:0)
それはCの話なのかUnixの話なのかオーエス全般の話なのか…
ショリケイイゾンテクソダナ
Re:/dev/full 関係ないじゃん。 (スコア:1)
バッファキャッシュの問題はC言語の実装の話。正確には libc にある C言語の標準関数の実装の話。
Re: (スコア:0)
Cの規格では(1)バッファされる(2)バッファされない(3)ラインバッファ(テキストのみ)の3種類が挙げられていて、そのどれかは処理系に依存する。
エラー処理的には(1)を想定したほうがいいので、元コメントは完全に正しい。
stderrはバッファされないと書いてあったかな。