在两个进程之间共享一个串口

pet*_*rus 8 linux serial

由于无法使用 Linux 在两个进程之间直接共享串口,我正在寻找另一种方法来实现这一点,我听说过 socat 但找不到如何实现以下内容的具体示例:

将一个物理串口(/dev/ttyUSB0)拆分为两个虚拟端口,一个读一个写,一个进程只需要发送数据,一个进程只需要接收数据。

不幸的是,我无法修改发送应用程序。

Ser*_*rge 5

在 Linux 中,获得对串行端口的独占访问始终是一个问题,因为限制不必要的干扰的唯一方法是用户/组访问权限。

随着时间的推移,约定已经建立,当某个进程愿意“拥有”串行端口设备时,如何告诉其他进程不要打开串行端口设备:要打开串行(并行)端口的进程首先检查锁定文件目录/tmp(其他标准可能使用/var/lock目录),例如 /tmp/LCK..ttyS0(对于 ttyS0 设备)并将其PID写入该文件。然后它读回它,如果PID匹配,那么该进程就获得了端口的所有权。当不再需要该端口后,锁定文件将被进程删除。

因此,您可以从不同的进程打开它,前提是这些进程 uids 或 gids 在设备上具有读写访问权限