小编Pho*_*ios的帖子

将mmap'd内存区域从MAP_SHARED更改为MAP_PRIVATE

所以我有一个我用mmap()分配的内存区域,类似于下面的代码:

void * ptr = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
Run Code Online (Sandbox Code Playgroud)

这里的关键是我正在使用MAP_SHARED标志.与相关的问题不同,只需再次调用mmap()以获取MAP_PRIVATE和Copy-on-Write语义就足够了,我不能让内核为我分配不同范围的虚拟地址.另外,在我再次调用mmap()之前,我不想调用munmap()并冒险让内核将部分/全部地址范围提供给进程中的其他内容.

是否存在将mmap内存区域从MAP_SHARED切换到MAP_PRIVATE以获取写时复制语义而不取消映射块的现有机制?

c mmap

5
推荐指数
1
解决办法
1584
查看次数

标签 统计

c ×1

mmap ×1