C++ Linux c++;:多个进程读取同一串行端口?
是否可以让多个进程同时在同一C++ Linux c++;:多个进程读取同一串行端口?,c++,linux,C++,Linux,是否可以让多个进程同时在同一/dev/ttyUSBx设备上执行IO?从我所做的测试来看,最后一个(最近一次)打开句柄进行读取的进程似乎得到了输出。当此进程退出时,下一个最近的进程将再次获得输出 启动进程A-从端口读取输出 启动进程B-从端口读取输出。进程A停止读取。 停止进程B-进程A再次开始读取 连接是否有一个参数,允许两者都获得输出?让它看起来像一个可以分叉原始进程,但我更需要一个长时间运行和多个独立(寿命较短)的作业。在任何操作系统上,多个进程能够共享这样一个基于串行的设备都是不寻常的 您
/dev/ttyUSBx
设备上执行IO?从我所做的测试来看,最后一个(最近一次)打开句柄进行读取的进程似乎得到了输出。当此进程退出时,下一个最近的进程将再次获得输出
启动进程A-从端口读取输出启动进程B-从端口读取输出。进程A停止读取。
停止进程B-进程A再次开始读取
连接是否有一个参数,允许两者都获得输出?让它看起来像一个可以分叉原始进程,但我更需要一个长时间运行和多个独立(寿命较短)的作业。在任何操作系统上,多个进程能够共享这样一个基于串行的设备都是不寻常的 您希望进程A和B“订阅”进程C。进程C读取设备并将读取的内容发布给订阅者。通信通道可以是任何适合您的IPC机制,如管道、消息队列或套接字
这通常被称为。在任何操作系统上,多个进程能够共享这样一个基于串行的设备都是不寻常的 您希望进程A和B“订阅”进程C。进程C读取设备并将读取的内容发布给订阅者。通信通道可以是任何适合您的IPC机制,如管道、消息队列或套接字
这通常被称为。一种方法是通过使用虚拟COM端口来避免一次只能从一个特定串行(COM)端口读取一个进程 如上所述,该软件允许您在windows上创建虚拟COM端口对。虚拟COM对的工作方式是,当您通过COM-a发送数据时,它将在COM-B上接收,反之亦然 反过来,这允许您在程序中执行以下操作:
注意:上述程序适用于Windows,不确定是否有Linux版本,但也许您可以找到类似的Linux版本。解决一个问题的一种方法是使用虚拟COM端口,即一次只能有一个进程读取特定串行(COM)端口 如上所述,该软件允许您在windows上创建虚拟COM端口对。虚拟COM对的工作方式是,当您通过COM-a发送数据时,它将在COM-B上接收,反之亦然 反过来,这允许您在程序中执行以下操作:
注意:上述程序适用于Windows,不确定是否有适用于Linux的版本,但可能您可以找到适用于Linux的类似程序。可能没有。你需要某种多路复用器。否则,数据将如何路由?DTR和RTS也可能处于不一致的状态。此外,在没有进程读取端口的情况下(在一段时间间隔内)-接收到的任何数据将流向何处?进程如何转移对端口的控制?它们不能同时读取,因为你不知道哪个进程得到了哪个字节。可能是重复的-可能不是。你需要某种多路复用器。否则,数据将如何路由?DTR和RTS也可能处于不一致的状态。此外,在没有进程读取端口的情况下(在一段时间间隔内)-接收到的任何数据将流向何处?进程如何转移对端口的控制?它们不能全部同时读取,因为您不知道哪个进程获得了哪些字节。可能的重复-您可以为此使用zeroMQ。它速度快、重量轻。您可以使用zeroMQ来实现此目的。它速度快,重量轻。