Подтвердить что ты не робот

Нужно ли проверять статус возврата 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;
}
4b9b3361

Ответ 1

Есть ли что-нибудь, что вы могли бы сделать, если это не получилось? Тогда да. Если вы ничего не можете сделать, тогда вы можете игнорировать его.

Хорошая практика - всегда проверять наличие ошибок и, по крайней мере, регистрировать их, если вы ничего не можете с этим сделать.

Ответ 2

Если функция close() завершается с ошибкой, может возникнуть ошибка, о которой вы беспокоитесь. Файлы больше, чем данные. Это метаданные, и они являются ресурсами. Если функция close() не удалась, вы все равно можете открыть дескриптор файла. Вы все равно можете привязывать данные файла, не позволяя ему повторно использовать файловую систему. Возможно, у вас все еще есть сетевые подключения. Если файл atime обновляется в close(), у вас будет устаревшее atime для файла. Это то, что вам действительно интересно.