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

2024-01-11

In this https://stackoverflow.com/questions/5656530/how-to-use-shared-memory-with-linux-in-c建议OP使用线程mmap()代替shmget()在 Linux 中获取共享内存。 我参观过this http://www.cs.cf.ac.uk/Dave/C/node27.html页面和this http://www.jimscode.ca/index.php/component/content/article/13-c/45-c-simple-mmap-example页面获取一些文档,但第二个给出了一个关于mmap().

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


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

一些提示:

  • 如果您通过以下方式创建您的孩子fork then mmap with MAP_ANONYMOUS | MAP_SHARED是迄今为止最简单的方法 - 只需一个电话。MAP_ANONYMOUS然而是一个 Linux 扩展POSIX 未指定 http://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html.
  • 如果您独立启动进程,但可以为它们提供共享内存名称,那么shm_open (+ ftruncate) + mmap with MAP_SHARED是两/三个呼叫。需要librt在某些操作系统上。
  • 如果您的操作系统有/dev/shm/ then shm_open相当于打开一个文件/dev/shm/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 共享内存:shmget() 与 mmap()? 的相关文章

随机推荐

  • Spring中依赖资源发生变化时重新加载类

    您知道 Eclipse 如何在更新 Tomcat 所依赖的资源文件 例如 spring 上下文文件 时自动重新加载在 Tomcat 中运行的类 这样您就不必重新启动 Tomcat 了 如何使类依赖于资源文件 以便 Eclipse 在资源文件
  • 比较 2 个 Dictionary 实例

    我想比较两个的内容Dictionary
  • 从github下载最新代码到Android Studio

    How to sync我当地的安卓工作室项目上有最新的代码github 我想下载所有最新的更改但我不希望我的本地更改被覆盖 如果存在冲突 它应该要求我解决这些特定文件 有办法实现这一点吗 我想下载所有最新的更改 但我不想要我的本地 更改被覆
  • `forSome { val `? 的示例

    Scala 语言规范指定的语法存在主义类型 https scala lang org files archive spec 2 13 03 types html existential types as Type InfixType Exi
  • Blazor 格式化数字的输入类型

    有人知道如何将数字类型格式化为 100 10 吗 目前 如果该值为 100 10 它将显示为 100 1 尝试了 bind value format with C2 0 0 我是 Blazor 的新手 所以如果有人能指出我正确的方向 我将不
  • 为什么这个流不返回任何元素?

    我尝试将以下代码编写为流 AbstractDevice myDevice null for AbstractDevice device session getWorkplace getDevices if device getPluginc
  • R Shiny:从模块内更改选项卡

    我有一个带有多个选项卡的闪亮应用程序 我希望选项卡内有操作按钮 允许用户切换选项卡 我找到了以下页面 https www titanwolf org Network q e6b187b8 6cad 4ece ad16 7ec73ed2f75
  • Selenium 挂起实例化 FirefoxDriver

    我尝试开始使用 selenium 今天下载了当前版本 并复制了他们的示例 该示例打开浏览器并执行谷歌搜索 然而 程序永远挂在第一行WebDriver driver new FirefoxDriver 我安装了 Firefox 13 Thre
  • NSXMLParser 泄漏

    我有以下泄漏的代码 Instruments 表示 泄漏的是 rssParser 对象 我 刷新 了 XML 提要 它运行了该块 然后泄漏了 file h interface TestAppDelegate NSObject
  • 使用 pandas 从宽到长的数据集

    有很多类似标题的问题 但我无法解决我的数据集遇到的问题 Dataset ID Country Type Region Gender IA01 Raw IA01 Class1 IA01 Class2 IA02 Raw IA02 Class1
  • 如何在 Flutter 中获取图像的 RGB 值?

    我正在为我的对象检测服务器创建一个移动客户端 我已经有一个完美工作的 python 客户端 它将图像作为输入 通过 HTTP 请求将其发送到服务器 并接收预测作为 json 响应 我正在尝试在 Dart 中实现同样的目标 而我对 Dart
  • BigQuery 最大分区数达到 2000 而不是 2500

    根据BigQuery 文档 https cloud google com bigquery quotas partitioned tables 分区表可以有2500个分区 每个分区表的最大分区数 2 500 Yet bq query des
  • golang插件如何验证包的版本?

    我正在尝试使用 golang 插件 但在调用时总是出现运行时错误plugin Open plugin Open plugin was built with a different version of package 我确信该插件是使用相同
  • 在 Rust 中的多个函数调用中保持变量处于活动状态

    我正在尝试在 Rust 中记忆递归 collat z 序列函数 但是我需要记忆值的哈希图来在单独的函数调用中保留其内容 有没有一种优雅的方法可以在 Rust 中做到这一点 或者我是否必须在 main 中声明 hashmap 并每次将其传递给
  • 如何在 Kotlin 上绕过 NetworkOnMainThreadException

    嗨 我从 kotlin 开始 现在 Android Studio 3 0 支持它 但我不知道如何在另一个线程中执行简单的网络请求 在java中很容易 new Thread new Runnable Override public void
  • Numpy 安装工具链损坏:无法链接简单的 C 程序

    System Windows 10 Python 3 7 Numpy 1 15 1 VS 2017 我不认为这是重复的 因为以下拟议的决议已失败 对于自制软件 不适用 Numpy 安装运行时错误 工具链损坏 无法链接简单的 C 程序 htt
  • JavaScript setTimeOut 似乎没有像我预期的那样工作

    这是一个简单的 JavaScript 文件 我在 Chrome localhost 下运行 所发生的情况是 DIV 背景颜色没有设置为绿色 然后设置为红色 而是直接设置为红色 第一个 setTimeout 似乎被忽略了
  • iOS Safari/Chrome 不会向上滚动以在无线电输入上显示验证错误消息

    我正在为需要移动设备友好的客户设置一份调查问卷 当表单提交 验证并且问题未得到回答时 它会滚动到第一个无效字段 无论是文本输入还是无线电输入 这仅适用于桌面浏览器和 Android 在 iOS Safari Chrome 上 文本输入按应有
  • mat-menu 穿透“cdk 覆盖雾”

    This 堆栈闪电战 https stackblitz com edit angular txgxyt file styles css SB 显示了问题 CSS类 WHYYYYY显示了我面临的 两个 问题 为了使垫菜单在悬停时打开 我需要设
  • Linux 共享内存:shmget() 与 mmap()?

    In this https stackoverflow com questions 5656530 how to use shared memory with linux in c建议OP使用线程mmap 代替shmget 在 Linux