stdio
ストリームでエラーが発生した場合(EOFではなく)、ストリームのエラーインジケータが設定され、ferror()
が0以外の値を返すようになります。私はいつもより多くの情報がerrno
で利用可能であると仮定してきました。しかし、私はこれをどのように知っていますか?stdioは常にerrnoを設定しますか?
いくつかの機能のドキュメント[例: Linuxのman fopen
]にはerrno
も設定されています。しかしながら、man fgets
は、errno
を全く言及していない。 glibcの情報ページは安心している: ストリームに関連付けられたエラー・インジケータを設定することに加えて
、ストリーム上で動作する機能はまた、その対応する低レベルの関数として 同様に、 `のerrno「を設定しますファイル の記述子を操作します。
しかし、私はこの保証がどれほど強いのか分かりません。それはC標準によって要求されていますか? Visual C/C++ではどうなりますか?
ありがとうございました。 POSIXの定義は非常に役に立ちます。例えば、それらに応じて、 "fgets"は実際にerrnoを設定します。私は、特定のケースのための最良の戦略は、POSIXのために書いて、Windowsの問題を解決することだと思います。 –