如何解决回写mmaped文件期间发生I / O错误
在mmap写回过程中是否存在用于处理错误的标准(POSIX等)操作系统行为? 甚至在某个地方将其记录为稳定的实现吗?
情况1:
一些程序执行mmap()
,写入该存储区,然后执行munmap()
或msync(MS_SYNC)
。在这种情况下,有一个明确的地方可以报告写回错误 ,但是我不知道是否应该以任何标准在munmap()
/ msync()
上报告这些错误。
情况2:
某些程序执行mmap()
,写入该存储区,然后执行sleep(1000)
。写回应该由OS异步完成,但是现在没有明确的位置可以报告写回中的任何错误。但是,操作系统可以将SIGBUS发送到程序。同样,我不知道这是否标准化。
情况3:
两个程序(A和B)对同一文件执行mmap(MAP_SHARED)
。程序A向该内存中写入内容,程序B应该立即看到此更改并可能依赖于它们。一段时间后,操作系统在尝试回写时出错。现在,我看到它是唯一合理的行为,它会杀死两个进程,因为它们依赖于无法进行的更改。但这看起来很奇怪。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。