我开始玩mmap了。我试图创建一个示例工作区,然后将其扩展到真实案例。
这就是我想要实现的目标:
流程1:
流程2 :(不是从流程1中获取;只是一个独立的流程)
我已经阅读了几个示例和文档,但我仍然没有找到如何实现这一目标。我缺少的是:
旁边信息,我在两个进程之间打开了一个消息队列,因此如果需要,他们可以共享一些消息(例如内存地址/大小......)。
任何提示?
提前致谢!
MIX
答案 0 :(得分:2)
这个答案认为你正试图在linux / unix上做这个。
进程2如何在不知道打开文件的情况下访问进程1映射的内存?
进程1将标志MAP_SHARED传递给mmap [1]。
你可以:
进程2打开带有标志MAP_SHARED的mmap。进程2中将显示对进程1中的mmaped内存的修改。如果需要精确控制何时将进程1的更改显示为进程2,则应使用msync控制它[3]
如何将mmap内容放入新文件中?我想我必须这样做 ftruncate一个新文件,mmap这个文件和memcpy进程的内容 1个内存映射来处理2个内存映射(然后是msync)
为什么不将写入内存作为常规内存写入?
[1] http://man7.org/linux/man-pages/man2/mmap.2.html
[2] Portable way to pass file descriptor between different processes