Linux下跨进程共享数据

2023-12-02

在我的应用程序中,我有一个进程分叉一个子进程,例如 child1,并且该子进程在磁盘上写入一个巨大的二进制文件并退出。然后,父进程派生出另一个子进程 child2,该子进程读取这个巨大的文件以进行进一步的处理。

文件转储和重新加载使我的应用程序变慢,我正在考虑可能的 完全避免磁盘 I/O 的方法。我已经确定的可能方法是 ram-disk 或 tmpfs。 我可以以某种方式从我的应用程序中实现 ram-disk 或 tmpfs 吗?或者还有其他的吗 通过这种方式我可以完全避免磁盘 I/O 并可靠地跨进程发送数据。


在分叉之前创建一个匿名共享内存区域,然后所有子进程都可以在分叉后使用它:

char *shared = mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);

请注意,共享内存时需要一些同步机制。实现此目的的一种方法是将互斥锁或信号量放入共享内存区域。

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

Linux下跨进程共享数据 的相关文章

  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何在第一个“/”(斜杠)处分割字符串并将其部分包围在“”中?

    我想格式化这个日期 div 23 05 2013 div 首先我想首先分割字符串 并将其余部分放在下一行 接下来 我想将第一部分包围在 span 标签 如下 div span 23 span 05 2013 div 23 05 2013 我
  • Android 中每秒更新一次 TextView [重复]

    这个问题在这里已经有答案了 我想每秒更新我的文本视图 单击按钮时我正在调用一种方法 loopMethod milli suppose milli 50000 i e 50 sec so my loopMethod int m 如下 publ
  • 为什么 android studio 无法识别 .wav / .mp3 文件

    我正在尝试向我的项目添加声音 但 android studio 无法识别这些文件 该文件前面有一个问号图标 如果我播放该项目 则会出现以下屏幕 有办法解决这个问题吗 选择 存档 选项并确保文件名语法正确 仅小写 a z 0 9 或下划线
  • Xpages浏览器错误

    我有以下错误 Error 403 HTTP Web Server You are forbidden to perform this operation 我在本地安装了这个应用程序 客户端和浏览器都运行良好 但是 当我在服务器上创建副本 我
  • 根据部分名称查找文件夹

    我有工作表来生成电子邮件 在 Outlook 上 考虑用户插入的参数 我有代码可以编写表格并将其包含到电子邮件正文中 我需要包含 PDF 附件 这些文件位于名称始终为的目录中 一个数字 在纸上 一个随机字符串 示例 某人请求号码为 340
  • 在 Emberjs 中使用不同模型从一条路线过渡到另一条路线

    我有一个搜索页面 我们可以在其中获得不同类型的搜索结果 在我想使用的搜索结果列表中 linkTo someResources someResource result result Name linkTo 并且在路线上someResource
  • Oracle:将数字转换为英语以外的其他语言的单词

    我正在尝试将数字转换为文字 select to char to date number j jsp from dual SELECT TO CHAR TO DATE 24834 j jsp FROM DUAL Output twenty f
  • 在 Swift 中读取文本文件

    我正在尝试从程序中读取一个文本文件 该文件是 var name String stringWithContentsOfFile test txt encoding NSUTF8StringEncoding error nil 其中text
  • matplotlib 中纵横比相等的图形坐标不一致

    我正在准备一张带有从一个到另一个的子图和箭头的图 此处已解决 在 Matplotlib 中绘制两个图之间的线 在我的图中 子图都具有相同的纵横比 这似乎扰乱了从数据坐标到图形坐标的转换 因此我创建的 Line2D 对象没有到达我想要的位置
  • 使用 scanf 读取带空格的字符串? [复制]

    这个问题在这里已经有答案了 我希望以下内容要求输入 然后接受一个字符串 带空格 然后再次执行 但在输入第一个字符串后它会重复输出 input char command 80 while 1 printf input scanf n comm
  • 基于其他文本列将数字列添加到 pandas 数据框[重复]

    这个问题在这里已经有答案了 我有这个数据框 df pd DataFrame 137 earn 158 earn 144 ship 111 trade 132 trade columns value topic print df value
  • 将 MFC 中的大型项目从 Visual C++ 6.0 迁移到 Visual Studio 2005

    我正在 Visual C 6 0 中维护一个大项目 250k loc 不包括从 idl 生成的代码 该项目使用 Visibroker 简称 VB 5 2 1 这是 Borland 的 CORBA 实现 最近 与我的项目通信的另一个模块升级到
  • 如何使用tabletop.js向传单地图添加标记?

    我正在使用这个非常好的指南将标记从 Google 工作表添加到基本的 leaflet js 地图 https rdrn me leaflet maps google sheets 问题是 在这里使用这些代码片段 我得到了控制台中记录和返回的
  • Powershell 如何知道在哪里可以找到要导入的模块?

    对于使用命令行开关和 powershell 的东西 我确实处于初学者水平 我使用 PowerShell API 从 C 调用 commandlet 我看到了奇怪的行为 在 stackoverfow 上的不同线程上 人们使用 Import C
  • SQL 查询返回笛卡尔积

    我有一些表 Employee id name id suc id dep id sec Suc id suc name Dep id dep id suc name Sec id sec id dep id suc name 不要责怪我 这
  • PHP 基础知识 - PHP 使用的 MySQL 密码存储在哪里

    我是网络开发新手 我正在学习 PHP 以便出售一些二进制文件 共享 Linux 主机 该网站尚未上线 我的php脚本 50 借用代码 50 自写 95 完全理解 登录MySQL来读取待售物品 并将销售交易数据写入另一个表中 Function
  • 如何检查服务器使用的 EL 版本

    我如何检查服务器使用的 EL 版本是什么 我正在运行 Websphere 7 EL 类位于 j2ee jar 中 清单如下 Manifest Version 1 0 Ant Version Apache Ant 1 6 5 Created
  • Java:将图像移向鼠标位置

    这是鲍勃 我已经知道如何让他rotate由于这个问题 朝向鼠标位置 https stackoverflow com posts 26607930 edit 我一切正常 但仍然无法做到move按下按键时他朝向鼠标位置 这是一个例子 impor
  • 可变长度霍夫曼码的比特流 - 如何写入文件?

    我正在用 C 语言开发霍夫曼编码 解码项目 并且很好地了解算法应如何存储有关霍夫曼树的信息 在解码期间重新构建树 以及使用可变长度代码解压缩到原始输入文件 当写入我的压缩文件时 我将输出一个包含唯一频率的 256 个 4 字节整数的表 并且
  • Linux下跨进程共享数据

    在我的应用程序中 我有一个进程分叉一个子进程 例如 child1 并且该子进程在磁盘上写入一个巨大的二进制文件并退出 然后 父进程派生出另一个子进程 child2 该子进程读取这个巨大的文件以进行进一步的处理 文件转储和重新加载使我的应用程