也许
shmget而且
shmat不一定是最适合您使用的界面。在我从事的项目中,我们使用内存映射 文件 通过C和Python
API提供对守护程序的访问,这为我们提供了一种非常快速的访问数据的方法
操作顺序如下所示:
- 客户端
door_call()
通知后台程序创建共享内存区域 - 守护程序安全地创建一个临时文件
- 守护程序
open()
,然后mmap()
是该文件 - 守护程序通过以下方式将文件描述符传递回客户端
door_return()
- 客户端
mmap()
是文件描述符,并将结构中连续放置的变量与该fd相关联 - 客户对这些变量进行所需的任何操作-需要时。
- 守护程序从共享区域读取并进行自己的更新(在我们的示例中,该守护进程将值从该共享区域写入日志文件)。
我们的客户利用图书馆来处理上述前5个步骤;该库随附了使用ctypes的Python包装器,以准确显示所需的函数和数据类型。
对于您的问题空间,如果只是python应用程序写入您的输出队列,那么您可以跟踪仅在python应用程序中处理过的帧。如果您的python和c
++应用程序都正在写入输出队列,那么这将增加您的难度,也许重构整个应用程序体系结构将是一项不错的投资。



