【发布时间】:2016-08-11 08:02:03
【问题描述】:
我已经开始玩 mmap 了。我正在尝试创建一个示例工作区,然后将其扩展到实际案例。
这就是我想要实现的目标:
过程 1:
- mmap一个文件(其实是一个设备,但是用文本文件生成例子也可以)
进程 2:(不是从进程 1 派生的;只是一个独立进程)
- 读取进程1映射的内存
- 更改一些位
- 将其写入新文件
我已经阅读了几个示例和文档,但我仍然没有找到如何实现这一点。我缺少的是:
- 进程 2 如何在不了解打开的文件的情况下访问进程 1 映射的内存?
- 如何将 mmap 内容放入新文件?我想我必须 ftruncate 一个新文件,mmap 这个文件并将进程 1 内存映射的内容 memcpy 到进程 2 内存映射(然后是 msync)
侧面信息,我在两个进程之间打开了一个消息队列,因此它们可以在需要时共享一些消息(例如内存地址/大小,...)。
有什么提示吗?
提前致谢!
混合
【问题讨论】:
-
mmap 不是 IPC 的一种形式。也许你想要 shmem?