Solaris 10 5/08 ご使用にあたって

STDIO getc ファミリのファイル終了条件の動作が変更になった

厳しい標準 C 準拠モードで作成されたアプリケーションは、一部のライブラリ関数の動作変更による影響を受けます。たとえば、cc -Xc または c89 準拠モードでコンパイルされたアプリケーションがこれに当たります。動作が変更されたライブラリ関数は次のとおりです。

1990 C 標準の正式な解釈では、ファイル終了条件が設定されたら、それ以降の入力操作ではファイルからデータを返さないようにする必要があります。ただし、ファイルポインタの位置を変更したり、アプリケーションによってエラーとファイル終了フラグが明示的にクリアされている場合は例外です。

ほかのすべての準拠モードの動作は変わりません。特に、このインタフェースでは、ファイル終了インジケータの設定後に、新しく書き込まれた追加データをストリームから読み取ることができます。

回避方法: ストリームのファイル終了条件が報告されたあとで追加データを読み取るには、ストリームに対して fseek() または clearerr() を呼び出します。