进程调用fork()并在其地址空间中使用匿名映射页面并且子进程修改页面后,子进程中的匿名映射页面是否基本上像内存映射页面一样起作用?
答案 0 :(得分:0)
这取决于传递给mmap
的标志。如果指定了MAP_SHARED
,则将共享映射的页面。如果MAP_PRIVATE
,则不会共享映射页面 - 每个分叉进程都会获得自己的副本。
MAP_SHARED和MAP_PRIVATE描述了write的处理 对内存对象的引用。如果指定了MAP_SHARED,则写入 引用应改变基础对象。如果MAP_PRIVATE是 指定的,调用进程对映射数据的修改 应仅对调用过程可见,不得更改 基础对象。没有具体说明是否修改了 建立MAP_PRIVATE映射后完成的基础对象 通过MAP_PRIVATE映射可见。 MAP_SHARED或 可以指定MAP_PRIVATE,但不能同时指定两者。映射类型是 保留在fork()。