Linux共享内存:shmget()vs mmap()?

在此线程中,建议在Linux中使用OP

mmap()而不是shmget()获取共享内存。我访问了这个页面,这个页面来获得一些文件,但第二个方面给出了一个模糊的例子mmap()

几乎是新手,并且需要在两个进程之间共享一些信息(以文本形式),我应该使用该shmget()方法还是mmap()?又为什么呢

回答:

两种方法都是可行的。mmap该方法比限制性更强shmget,但更易于使用。shmget是旧的System

V共享内存模型,并且支持范围最广。mmap/

shm_open是用于共享内存的新POSIX方法,并且更易于使用。如果您的操作系统允许使用POSIX共享内存,那么我建议您这样做。

一些提示:

  • 如果您通过创建你的孩子forkmmapMAP_ANONYMOUS | MAP_SHARED是迄今为止最简单的方式-只需一个电话。MAP_ANONYMOUS是POSIX未指定的Linux扩展。
  • 如果您独立启动进程,但可以为它们提供共享的内存名称,则shm_open(+ ftruncate)+ mmapwith MAP_SHARED是两个/三个调用。librt在某些操作系统上需要。
  • 如果您的操作系统具有,/dev/shm/shm_open相当于在中打开文件/dev/shm/

以上是 Linux共享内存:shmget()vs mmap()? 的全部内容, 来源链接: utcz.com/qa/424391.html

回到顶部