在 this线程 OP 建议使用 mmap()
而不是 shmget()
在 Linux 中获取共享内存。
我访问了this页和 this页面来获取一些文档,但第二个给出了一个关于 mmap()
的晦涩示例。
几乎是新手,需要在两个进程之间共享一些信息(以文本形式),我应该使用 shmget()
方法还是 mmap()
?为什么?
最佳答案
这两种方法都是可行的。 mmap
方法比 shmget
更严格一些,但更易于使用。 shmget
是旧的 System V 共享内存模型,支持最广泛。 mmap
/shm_open
是新的 POSIX 共享内存方式,更易于使用。如果您的操作系统允许使用 POSIX 共享内存,那么我建议您使用它。
一些提示:
fork
创建 child 然后 mmap
与 MAP_ANONYMOUS | MAP_SHARED
是迄今为止最简单的方法 - 只需一个电话。 MAP_ANONYMOUS
然而,它是一个 Linux 扩展 not specified by POSIX .shm_open
(+ ftruncate
) + mmap
与 MAP_SHARED
是两个/三个电话。需要 librt
在某些操作系统上。/dev/shm/
然后 shm_open
相当于在/dev/shm/
中打开一个文件.https://stackoverflow.com/questions/21311080/