Нужно ли проверять состояние возврата fclose (), если я только читаю файл? - PullRequest
20 голосов
/ 10 июня 2011

Связано: fclose проверка возвращаемого значения

Хотя важно проверить возвращаемое значение 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;
}

Ответы [ 2 ]

11 голосов
/ 10 июня 2011

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

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

1 голос
/ 08 мая 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...