close
和这个的联机帮助页http://pubs.opengroup.org/onlinepubs/009695399/functions/close.html(看起来很权威)说close
系统调用可能会失败。
IO 库应该如何处理这个问题?
答案1
最令人担心的是
[EIO] A previously-uncommitted write(2) encountered an
input/output error.
因此,理想情况下,程序应该检查 close 的返回值,尤其是对于EIO
.如果文件系统已满,写入通常会失败,但理想情况下会进行监视或日志轮转等以在发生这种情况之前捕获该情况。如果您不信任文件系统并且正在处理超级关键数据(例如,我不知道)/etc/passwd
或付款批处理文件,则在写入数据时对数据进行校验和,然后验证写入的内容可能是必要的。我们已经看到由于与文件系统填充无关的原因而严重损坏。
我猜测并不是每个写入文件的程序都会检查返回,尽管这必须根据具体情况进行审核。 (我记得libxml
几年前仔细检查时出现的误报?)
我还将回避 C 库应该如何进行错误处理。