Нужно ли проверять статус возврата fclose(), если я только читаю файл?
Связано: fclose return value check
Хотя важно проверить возвращаемое значение fclose()
, если вы пишете файл (в случае сбоя операции сброса), нужно ли это делать при чтении файла?
FILE *f = fopen(path, "r");
if (f == NULL)
return 0;
/* Do something with the file... */
if (fclose(f) != 0) {
/* Error closing a file we successfully read. */
return 0;
}
Ответы
Ответ 1
Есть ли что-нибудь, что вы могли бы сделать, если это не получилось? Тогда да. Если вы ничего не можете сделать, тогда вы можете игнорировать его.
Хорошая практика - всегда проверять наличие ошибок и, по крайней мере, регистрировать их, если вы ничего не можете с этим сделать.
Ответ 2
Если функция close() завершается с ошибкой, может возникнуть ошибка, о которой вы беспокоитесь. Файлы больше, чем данные. Это метаданные, и они являются ресурсами. Если функция close() не удалась, вы все равно можете открыть дескриптор файла. Вы все равно можете привязывать данные файла, не позволяя ему повторно использовать файловую систему. Возможно, у вас все еще есть сетевые подключения. Если файл atime обновляется в close(), у вас будет устаревшее atime для файла. Это то, что вам действительно интересно.