原来将更MAP_SHARED
改为MAP_PRIVATE
可以使此操作成功。
失败的原因很微妙:我的代码正在VirtualBox
VM内运行,而我试图的文件
mmap位于主机上的共享目录中。显然,VirtualBox虚拟文件系统无法
mmap使用
MAP_SHARED跨虚拟机管理程序边界的选项来实现。
如果您在我的问题和他的回答上都读到jxh的有用评论,那么事实证明该代码对他有用,因为他可能正在尝试将
mmap主机文件系统文件放入主机内存中。
我观察到从切换
MAP_SHARED到
MAP_PRIVATE也是与此一致:由于私有映射的内存对于其他进程是不可见的,因此虚拟文件系统驱动程序可能不会反对映射内存。
解决方案是将我要映射的文件移动到来宾的硬盘中,然后从那里进行操作。



