3

如果在我使用mmap和 flag对文件进行内存映射后MAP_PRIVATE,我在同一进程中对底层文件进行了更改,会发生什么情况?mmap记忆会接受变化吗?

在 Linux 中,手册页说:

MAP_PRIVATE:创建私有写时复制映射。映射的更新对映射同一文件的其他进程不可见,并且不会传递到基础文件。未指定在 mmap() 调用之后对文件所做的更改是否在映射区域中可见。

所以在 Linux 中,答案是“未指定”。

但是在 Mac OS X 中它只说:

MAP_PRIVATE:修改是私有的(写时复制)。

我做了一个快速示例工具,似乎表明进行更改不会影响私有映射。但没有其他证据证明这一点。

4

0 回答 0