将已经分配的内存映射到共享内存

Map already allocated memory into shared memory

如果已经分配了一些内存(例如使用 malloc),是否可以与另一个进程共享该内存,例如将页面标记为共享?

需要明确的是,这与最初将内存分配为共享内存不同,例如使用 shmget 和类似的方式。显然可以用 memcpy 做到这一点,但有没有办法直接做到这一点?

mmap() creates a new mapping in the virtual address space of the calling process.
The starting address for the new mapping is specified in addr.
The length argument specifies the length of the mapping.

所以我想:

  • 在供体进程中打开一个文件进行写入。
  • mmap() 您现有的 malloc 内存。
  • 在另一个进程中打开同一个文件。
  • 享受共享内存。