问题描述
在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 (将#修改为@)