В моей системе (Ubuntu Linux, glibc) man-страница вызова close
указывает несколько возвращаемых значений ошибки, которые она может вернуть. Он также говорит
Не проверять возвращаемое значение close() является общей, но тем не менее серьезной ошибкой программирования.
и в то же время
Обратите внимание, что возвращаемое значение должно использоваться только для диагностики. В частности, close() не следует повторять после EINTR, поскольку это может привести к закрытию повторно используемого дескриптора из другого потока.
Поэтому мне не разрешено игнорировать возвращаемое значение или повторить вызов.
Учитывая, что я должен обрабатывать отказ вызова close()
?
Если ошибка произошла, когда я писал что-то в файл, я, вероятно, должен попытаться записать информацию в другом месте, чтобы избежать потери данных.
Если бы я только читал файл, могу ли я просто зарегистрировать сбой и продолжить программу, притворяясь, что ничего не произошло? Есть ли какие-либо оговорки, утечка дескрипторов файлов или что-то еще?