首页 > 解决方案 > linux中匿名内存映射映射到哪个文件?

问题描述

我的问题是,当我们创建匿名内存映射时,映射到进程地址空间的文件是什么。我知道匿名映射保证用零填充。然后是/dev/zero文件吗?据我了解,只有在参与进程的地址空间内映射了某个文件之后,才能进行进程间通信……无论是tmpfs中的文件还是普通文件系统中的文件。我是Inter Process Communication的新手,如果您发现我的理解有任何缺陷,请纠正。

标签: clinuxipcmmap

解决方案


来自man mmap

MAP_ANONYMOUS

映射没有任何文件支持;[...]

它只是分配和初始化内存。在调用 之前mmap,由于虚拟内存未映射到真实内存,您会在尝试访问内存时遇到保护冲突 (SIGSEGV)。(嗯,这就是在具有虚拟内存的系统中发生的情况。)


推荐阅读