我目前正在64位Linux平台上用C(程序A)编写网络数据使用监视器。作为数据包嗅探器,没有太多时间将数据写入文件或数据库而不冒丢失数据包的风险。我可以为此目的使用另一个线程,但我认为更清洁的解决方案(如果存在)是从另一个 C 程序或理想情况下是 python cgi 脚本(程序 B)访问存储在内存中的这些数据。这样,数据将按需提供。内存中的数据只能从程序 B 中读取。这可能吗?如果有怎么办?谢谢。
更新:
我看到这可以使用 mmap() 将数据存储在内存中,并使用 shmget() 来检索它。我听说有人说 shmget 是旧的。还有哪些其他选择?
要传递的二维数组可以大到 5000x4 int 或 5000x15 char。
posix_ipc听起来很有希望作为一种从 python(程序 B)访问共享内存的方式。有谁知道这是否适用于在 C(程序 A)中创建的共享内存?
我下载了 posix_ipc,它有一些非常酷的演示。第一个演示了使用共享内存相互通信的两个进程。这两个进程可以是 C 和 python 的任意组合,并且提供了这四个进程中的每一个的源代码。它看起来是处理我正在尝试做的最有效的方法,但我还没有时间玩它。我会在我这样做时报告。
che 下面的建议听起来也行得通,我将把它作为我的 B 计划。
感谢大家的帮助!