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

this线程中,建议OP使用mmap()而不是shmget()在Linux中获取共享内存。
我访问了this页面和this页面来获取一些文档,但第二个给出了一个关于mmap()的模糊示例。

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

谢谢,

鲍勃

这两种方法都是可行的。 mmap方法是一个有点更限制然后shmget,但更容易使用。 shmget是旧的System V共享内存模型并且有最广泛的支持。 mmap / shm_open是新的POSIX方式来做共享内存并且更容易使用。如果你的操作系统允许使用POSIX共享内存,那么我建议去。

一些提示:

>如果你通过叉创建你的孩子,然后mmap与MAP_ANONYMOUS | MAP_SHARED是迄今为止最简单的方法 – 只需一个调用。
>如果独立地启动进程,但是可以为它们提供共享内存名称,则shm_open(ftruncate)mmap与MAP_SHARED是三分之二的调用。在某些操作系统上需要librt。
>如果你的操作系统有/ dev / shm /,那么shm_open相当于在/ dev / shm /中打开一个文件。

http://stackoverflow.com/questions/21311080/linux-shared-memory-shmget-vs-mmap

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – Linux共享内存:shmget()vs mmap()?