fread()
がエラーを発生させたときにチェックしようとしているので、ferror()
を使用します。freadとferrorがerrnoを設定しない
chunk = fread(buf, 1, 100, file);
if (ferror(file))
{
return errno;
}
しかし、ferror()
manページは言う:
エラーがこれらの関数は失敗すべきではなく、外部変数errnoを設定しないでください。
だから、どのように私は、ファイルが読み込まれたときfread()
とferror()
はerrno
を設定しなかったものの、エラーの種類は、発生を知ることができますか?
[fread(3)](http://man7.org/linux/man-pages/man3/fread.3.html)を読んだことがありますか?それは誤って文書化された動作をしています! –
はい、errnoの設定について何も言及していません。 –
@BasileStarynkevitch彼のポイントはまさにそれだと思います。確かに 'ferror'はエラーが起こったと言うことができますが、' fread'は 'errno'を設定するために文書化されていないので、' errno'が勝ったので、ストリームエラー状態を照らした特定のエラー状態を反映していませんか? – WhozCraig