close
그리고 이것에 대한 맨페이지http://pubs.opengroup.org/onlinepubs/009695399/functions/close.html(권위 있는 것처럼 보임) close
시스템 호출이 실패할 수 있다고 말했습니다.
IO 라이브러리는 이 문제를 어떻게 처리해야 합니까?
답변1
가장 걱정스러운 점은
[EIO] A previously-uncommitted write(2) encountered an
input/output error.
따라서 이상적으로는 프로그램이 특히 닫기의 반환 값을 확인해야 합니다 EIO
. 파일 시스템이 가득 차면 일반적으로 쓰기가 실패하지만 이상적으로는 이러한 일이 발생하기 전에 이를 포착하기 위한 모니터링 또는 로그 회전 등이 있어야 합니다. 파일 시스템을 신뢰하지 않고 매우 중요한 데이터(예: 잘 모르겠습니다) /etc/passwd
또는 결제 배치 파일을 처리하는 경우 기록된 데이터를 체크섬한 다음 기록된 내용을 확인해야 할 수도 있습니다. 파일 시스템 채우기와 관련 없는 이유로 인해 심각한 손상이 발생했습니다.
내 생각에는 파일에 쓰는 모든 프로그램이 반환값을 확인하는 것은 아니지만 사례별로 검토해야 합니다. ( libxml
몇 년 전 면밀한 조사에서 오탐이 있었던 것으로 기억합니까 ?)
또한 C 라이브러리가 오류 처리를 수행하는 방법도 피하겠습니다.