3

我想在两个进程之间共享内存。我知道的一种方法是mmap共享文件。但是,我不想使用共享文件,我想要内存中的匿名映射。我怎样才能做到这一点。

4

5 回答 5

3

共享内存就是你想要的:http ://en.wikipedia.org/wiki/Shared_memory

因为你在 linux 上,所以你去:http ://www.kernel.org/doc/man-pages/online/pages/man7/shm_overview.7.html

于 2012-07-20T16:21:58.933 回答
3

shm_open是你的朋友。您可以使用shm_unlink取消映射共享区域。

于 2012-07-20T16:25:36.520 回答
2

您可以将 mmap 文件放在目录 /dev/shm 中,该目录在大多数 Linux 系统中作为 tmpfs(即基于内存的文件系统)安装。

或者您可以在目录树的其他位置安装您自己的 tmpfs(如果您需要其他选项)。

于 2012-07-20T16:24:22.847 回答
0

shm_get是一个很好的起点,但您还需要阅读有关信号量的信息以实现互斥,以免内存损坏。

于 2012-07-20T16:26:39.563 回答
0

请记住,在 NUMA 系统上,如果内核位于不同的节点上,它们将以不同的速度访问内存,除非您选择与内核等距的 NUMA 节点。

于 2012-07-20T16:43:11.243 回答