【发布时间】:2019-06-12 17:51:03
【问题描述】:
我正在尝试在 Linux 中的程序之间进行双向多对一通信。
我的计划如下:一个名为“驱动程序”的与硬件通信的程序需要与 Linux 中未知数量的应用程序通信。 我读到,进程间通信最常见的方式之一是“命名管道”。
我还没有找到的问题是:新程序应该如何通知驱动程序一个新程序正在运行,以便在新程序和驱动程序之间建立另一个连接(命名管道)?
所有程序都将用 C++ 编写
【问题讨论】:
-
我认为在这种情况下套接字比管道更有意义。驱动进程可以监听环回设备,其他进程在需要与驱动通信时只需发起 TCP 连接即可。
-
我正在使用运行 raspbian lite 的树莓派 2B。我可能错了,但我认为 TCP 套接字为此目的会有点开销。
-
@MrBit A
AF_UNIX/AF_LOCAL套接字只不过是一个命名管道 afaik,它拥有你想要的所有不错的功能,就像select支持创建一个真正基于事件的驱动程序。如果您稍后决定让其他机器能够连接(可能是来自另一个 Pi 的驱动程序),您的框架将为它做好准备。 -
是的,使用 UNIX 套接字!
标签: c++ linux named-pipes