没有套接字的进程间文件系统通信
Posted
技术标签:
【中文标题】没有套接字的进程间文件系统通信【英文标题】:Interprocess file system communication without sockets 【发布时间】:2016-05-13 08:45:39 【问题描述】:我正在运行一个名为 MiniNet Wifi 的网络模拟器,它允许模拟包括 AP 和 UE(因此是 wifi)在内的网络拓扑。仿真软件是唯一可以访问一些关键变量的进程,例如UE(即移动设备)的“范围内 AP”。
UE 和 AP 在单独的 linux 网络命名空间 (netns) 中运行。仿真在主机(常规)命名空间中运行。这意味着主机和设备网络堆栈之间不可能进行通信。出于不相关的原因,这也是我需要的样子。
长话短说,我需要在仿真进程中生成一个线程,以允许其他进程传递消息(往返)。因此我需要使用文件系统而不是网络堆栈。所以我的问题归结为在 python 中执行此操作的“最佳”方式是什么。命名管道,只是一个简单的文件等?
还可以提到的是,如果消息传递相当快(ish),它是理想的,因为任务在某种程度上是时间紧迫的。
谢谢。
附言。一切显然都在同一台物理机器上运行并共享文件系统,即不要与 docker 混淆。
【问题讨论】:
我意识到这更像是一个操作系统问题,但在 python 中肯定必须有一种“首选”的方式。 命名(UNIX)套接字会很好 - 管道可能不太有用。一个简单的文件 + mmap 可能更快(匿名 mmap/shmem 段可能更快),但您必须自己弄清楚同步协议。 【参考方案1】:感谢@Useless 为我指明了正确的方向。我找到了this link,它完美地解决了我的问题!
【讨论】:
以上是关于没有套接字的进程间文件系统通信的主要内容,如果未能解决你的问题,请参考以下文章