Примечание: Прочитайте до конца, прежде чем отмечать это как дубликат. Хотя это похоже, объем того, что я ищу в ответе, выходит за рамки того, о чем просил предыдущий вопрос.
Широко распространенная практика, с которой я склонен соглашаться, обычно относится к close
как функции ресурса-освобождения для файловых дескрипторов, а не к потенциальной операции ввода-вывода со значимыми ошибками. И действительно, до решения проблемы 529, POSIX оставил состояние дескриптора файла (то есть, было ли оно еще выделено или не указано) неуказано после ошибок, что делает невозможным реагировать переносимо на ошибки каким-либо значимым образом.
Однако много программного обеспечения GNU подходит для проверки ошибок с close
, а справочная страница Linux для close
вызывает неспособность выполнить так что "общая, но тем не менее серьезная ошибка программирования". NFS и квоты приводятся как обстоятельства, при которых close
может вызывать ошибку, но не дает подробностей.
Каковы ситуации, при которых close
может потерпеть неудачу, в реальных системах, и актуальны ли они сегодня? Мне особенно интересно узнать, существуют ли какие-либо современные системы, где close
терпит неудачу для любых не-NFS, не-устройств-node -специальных причин, а также для отказов NFS или устройств, при каких условиях (например, конфигурации), они могут быть видны.