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)+mmapwithMAP_SHARED是两个/三个调用。librt在某些操作系统上需要。 - 如果您的操作系统具有,
/dev/shm/则shm_open相当于在中打开文件/dev/shm/。
以上是 Linux共享内存:shmget()vs mmap()? 的全部内容, 来源链接: utcz.com/qa/424391.html

