使用更多信息更新问题:
我在 Linux Ubuntu 14.04 机器上有 32 个网络命名空间,每个命名空间中运行一个 C 程序。我希望程序能够与其他命名空间(不是线程,单独的进程)中的兄弟姐妹共享一些数据。如何才能做到这一点?我无法进行 UDP 多播,因为每个命名空间都有自己的网络堆栈,并且发送到多播域的数据包对其他命名空间不可见。我也无法考虑通过 mmap 内存干净地做到这一点。
使用 mmap(),每个进程可能会尝试同时写入地图。此外,当一个进程写入时,其他进程应该能够弄清楚这一点,并用这个新内容更新他们的数据结构。一旦每个进程都知道这个先前的更新,他们就被允许写。这就是为什么我首先想到使用 UDP Multicast 套接字进行通信的原因,它对 32 个进程非常有效,但它们必须在同一个命名空间中。
此外,据我所知,Unix 域套接字不允许多个读取器/写入器工作。
感谢任何帮助!