Linux共享内存:shmget()vs mmap()?
在此线程中,建议在Linux中使用OP
mmap()
而不是shmget()
获取共享内存。我访问了这个页面,这个页面来获得一些文件,但第二个方面给出了一个模糊的例子mmap()
。
几乎是新手,并且需要在两个进程之间共享一些信息(以文本形式),我应该使用该shmget()
方法还是mmap()
?又为什么呢
回答:
两种方法都是可行的。mmap
该方法比限制性更强shmget
,但更易于使用。shmget
是旧的System
V共享内存模型,并且支持范围最广。mmap
/
shm_open
是用于共享内存的新POSIX方法,并且更易于使用。如果您的操作系统允许使用POSIX共享内存,那么我建议您这样做。
一些提示:
- 如果您通过创建你的孩子
fork
再mmap
有MAP_ANONYMOUS | MAP_SHARED
是迄今为止最简单的方式-只需一个电话。MAP_ANONYMOUS
是POSIX未指定的Linux扩展。 - 如果您独立启动进程,但可以为它们提供共享的内存名称,则
shm_open
(+ftruncate
)+mmap
withMAP_SHARED
是两个/三个调用。librt
在某些操作系统上需要。 - 如果您的操作系统具有,
/dev/shm/
则shm_open
相当于在中打开文件/dev/shm/
。
以上是 Linux共享内存:shmget()vs mmap()? 的全部内容, 来源链接: utcz.com/qa/424391.html