我可以使用 shmctl 调整 Linux 共享内存的大小吗?

2024-04-04

我有一个 C++ 应用程序,它通过 shmget(2) 在 Linux 系统上分配共享内存。我存储在共享内存中的数据会定期增长,我想以类似于 realloc() 增长常规内存的方式调整共享内存的大小。有没有办法做到这一点?我在 IBM 网站上找到了一个文档,其中提到了 SHM_SIZE 命令,但 Linux 和 BSD 联机帮助页中没有该命令,即使在特定于 Linux 的部分也是如此。


简单的回答:没有简单的方法。

原因非常合乎逻辑。共享内存被单独附加到每个进程的虚拟空间。每个进程都有自己的虚拟地址空间。每个进程都可以随时附加该段(不是字面意思,对齐设置了一些限制)任意地址。系统如何保证,比方说通过将区域扩展 4MiB,该段的每个“用户”都能够容纳 bigget 块在相同的起始地址之前较小的部分在哪里?

但你不应该放弃!你可以发挥创意。你可以想出拥有一个的想法header段,您在其中存储有关真实有效负载段的信息。您可以使每个进程遵守一些规则,例如:当其 id 时重新附加有效负载段,如中某处所述标头段, 不匹配已知的.

建议:我怀疑你知道这一点,但是从不在共享区域内保留指向数据的指针,仅保留偏移量.

我希望你能对我的胡言乱语有所利用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以使用 shmctl 调整 Linux 共享内存的大小吗? 的相关文章

随机推荐

  • .Net Mvc 3 触发器(提交按钮除外)非侵入式验证

    我想要什么 我想通过我选择的事件在我的视图中触发客户端验证 它可能是 onblur 也可能是另一个按钮 但不是提交按钮 相关链接 如何在不使用提交按钮的情况下触发验证 https stackoverflow com questions 57
  • 删除字符串中不需要的字符

    我想问如何从字符串中删除特殊字符 从废弃页面中提取 4 30am 我只是想获得时间 所以我尝试使用以下方法过滤它 str 4 30am new string preg replace A Za z0 9 str echo pre new s
  • 使用 pandas 读取带有 numpy 数组的 csv

    我有一个csv包含 3 列的文件emotion pixels Usage包含由 组成35000行例如0 70 23 45 178 455 Training I used pandas read csv阅读csv文件为pd read csv
  • XPath 元素包含 2 个子元素,每个子元素都与特定文本匹配

    我正在使用 Selenium 来定位页面上的某些元素 我有一张看起来像这样的桌子 table tbody tr td Text1 td td Text2 td tr tbody table Each 元素与此模式匹配 我想传入两个字符串 t
  • 尝试映射具有重复值的系列时出现 InvalidIndexError

    我正在尝试将医院名称映射到其英国邮政编码 我有这些医院 在英国称为 Trusts 的脊柱手术的 csv 该 csv 是 kate spine csv 我从中导入一列 信任 以简化操作 import pandas as pd spine pd
  • Pod 和部署有什么区别?

    我一直在创建豆荚type deployment但我看到一些文档使用type pod 进一步来说多容器 Pod 的文档 http kubernetes io docs user guide pods multi container apiVe
  • React router Link 不会导致组件在嵌套路由内更新

    这真让我抓狂 当我尝试在嵌套路由中使用 React Router 的 Link 时 链接会在浏览器中更新 但视图不会改变 然而 如果我刷新页面到链接 它就会出现 不知何故 该组件没有在应该更新的时候更新 或者至少这是目标 这是我的链接的样子
  • 如何在 Google OAuth 客户端中使用私有 IP 作为“授权 JavaScript 来源”?

    我使用 Google OAuth2 在我的网站中实现了 使用 google 登录 在 Google API 控制台中Authorized JavaScript origins我目前拥有的清单http localhost 3000 但现在我想
  • 无法连接到 gitlab CI 中 unix:///var/run/docker.sock 的 Docker 守护进程

    我查看了其他问题 但找不到自己的解决方案 我在 gitlab 中设置 CI 并使用 gitlab 的共享运行器 在构建阶段 我使用 docker 镜像作为基础镜像 但是当我使用docker命令它说 无法连接到位于 unix var run
  • iPhone 应用程序的唯一标识符

    对于将图像提交到服务器的 iPhone 应用程序 我需要以某种方式将来自特定手机的所有图像绑定在一起 每次提交时我都想发送一些唯一的电话号码 看着 UIDevice mainDevice uniqueIdentifier and NSUse
  • 为什么 Visual Studio 代码格式不能正常用于 Razor 标记?

    或者 我应该问 VS 代码格式化何时可以正确用于 Razor 标记 这种格式适用于大多数结构 但似乎对 if 块感到窒息 下面的代码是VS格式化的 修复这种情况很容易 只需多一个缩进 但我很好地接受了日常使用中的格式 并且喜欢在我的大部分代
  • 在 Chrome 和 Safari 中使用 onafterprint

    我知道直到最近onafterprint仅适用于 IE 最近 HTML5 已将其添加到其事件列表中 我只在 Firefox 中成功使用它 但无法让它在 Chrome 或 Safari 中运行 当它在正文中使用时 它似乎仅在 Firefox 中
  • 使用访问令牌重置环回密码

    我正在开发一个使用 Loopback 作为框架的项目 其中包括用户和身份验证 我添加了生成并通过电子邮件发送的密码重置路由 一切似乎都正常工作 最近 我发现密码重置似乎不起作用 这里重置密码的流程是 调用用户密码重置方法 通过重置事件发送电
  • 获取 xml body 的所有元素并添加到 struct

    我正在寻找一种方法来循环 XML Body 并将每个 xml 元素传递到结构中 我通过以下方式访问了 xml 主体
  • 随着时间的推移围绕枢轴点旋转游戏对象

    我使用以下代码相对于另一个枢轴点旋转一个点 Vector3 RotatePointAroundPivot Vector3 point Vector3 pivot Vector3 angles Vector3 dir point pivot
  • 尝试共享图像时 Facebook 不会出现在共享窗口上

    我在应用程序中创建了一个位图 并希望使用 Intent ACTION SEND 通过电子邮件应用程序或 Facebook 共享它 共享窗口打开 gmail 和 yahoomail 应用程序图标出现 但没有 facebook 或 g 我真的不
  • @PostConstruct 中没有会话休眠

    MyDao 类具有通过 Hibernate SessionFactory 执行整个持久性任务的方法 它工作得很好 我在 MyService 中注入了 MyDao 如上所示 但是当在注入 MyDao 后调用 PostConstruct ini
  • 更好地理解 Java 中的递归

    好吧 我对 Java 中的递归有些困惑 假设我有以下代码 static int findShortestString String paths int lo int hi if lo hi return lo int minindex fi
  • mongos 上的 MongoDB 错误:位置选项太多

    我正在尝试运行一个批处理脚本 这应该是我第一次在 mongodb 上进行分片 它在这一行显示以下错误 D mongodb win32 x86 64 2 2 3 bin gt mongos configdb localhost 26050 l
  • 我可以使用 shmctl 调整 Linux 共享内存的大小吗?

    我有一个 C 应用程序 它通过 shmget 2 在 Linux 系统上分配共享内存 我存储在共享内存中的数据会定期增长 我想以类似于 realloc 增长常规内存的方式调整共享内存的大小 有没有办法做到这一点 我在 IBM 网站上找到了一