在this线程中,建议OP使用mmap()
而不是shmget()
来获得Linux中的共享内存.
作为一个新手,并且需要在两个进程之间共享一些信息(以文本形式),我应该使用shmget()
方法还是mmap()
方法?为什么?
在this线程中,建议OP使用mmap()
而不是shmget()
来获得Linux中的共享内存.
作为一个新手,并且需要在两个进程之间共享一些信息(以文本形式),我应该使用shmget()
方法还是mmap()
方法?为什么?
这两种方法都是可行的.mmap
方法比shmget
方法有点限制,但更容易使用.shmget
是旧的SystemV共享内存模型,具有最广泛的支持.mmap
/shm_open
是POSIX实现共享内存的新方法,更易于使用.如果您的操作系统允许使用POSIX共享内存,那么我建议您这样做.
一些提示:
fork
创建你的子元素,那么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/
中打开一个文件.