如果在我使用mmap
和 flag对文件进行内存映射后MAP_PRIVATE
,我在同一进程中对底层文件进行了更改,会发生什么情况?mmap
记忆会接受变化吗?
在 Linux 中,手册页说:
MAP_PRIVATE:创建私有写时复制映射。映射的更新对映射同一文件的其他进程不可见,并且不会传递到基础文件。未指定在 mmap() 调用之后对文件所做的更改是否在映射区域中可见。
所以在 Linux 中,答案是“未指定”。
但是在 Mac OS X 中它只说:
MAP_PRIVATE:修改是私有的(写时复制)。
我做了一个快速示例工具,似乎表明进行更改不会影响私有映射。但没有其他证据证明这一点。