【发布时间】:2019-11-28 22:22:28
【问题描述】:
我想在独立运行而不是fork的进程之间共享内存。
我已经阅读了 mmap 和 shm_open 的手册页,但仍然对用法感到困惑。
- 共享内存,在我看来应该是不同进程之间映射虚拟内存空间的机制,但是为什么
mmap有fd这个参数呢?这是否意味着内存实际上是通过文件共享的? - 另外,
shm_open似乎接受一个文件名作为它的参数,所以它实际上打开了一个文件? - 既然我有多个独立的进程,应该如何通知其他进程共享的物理内存地址?
谁能给出一些在两个进程之间共享内存的示例代码?比如说,我们有进程producer和一个consumer进程,它们如何通过mmap共享的内存段进行通信?
【问题讨论】:
标签: c++ c linux shared-memory mmap