这可能是一个 XY 问题,但我想将一个串行终端(例如 /dev/ttyUSB0)克隆到两个终端中。来自任一终端的输入被复用到真实终端,并且输出被馈送到两个终端。有没有一个工具可以实现这一点/这是否可能?
我经常使用小型终端仿真器dterm通过串行方式处理嵌入式硬件。我想始终保持交互式终端打开,但也使用Expect来运行命令序列。例如,重新启动并在 U-Boot 提示符处停止。
我想象一个这样使用的工具:
$ teeterm /dev/ttyUSB0
Clone successful: /dev/pts/3 and /dev/pts/4 available.
$ dterm /dev/pts/3 115200
Run Code Online (Sandbox Code Playgroud)
在另一个外壳中:
$ ./uboot (which spawns and interacts with dterm /dev/pts/4 115200)
使用 dirkt 发布的示例代码作为基础,我为此构建了一个真正的实用程序。它可以在 Github 上找到。
我最终使用了:
teeterm dterm /dev/ttyUSB0 115200
(in another shell) dterm pty0
(in another shell) dterm pty1
两个伪终端都可以访问命令进程 I/O。该实用程序最重要的方面是通过伪终端(用户不可用)控制子进程的forkpty调用,以及用于创建两个伪终端并监视所有三个伪终端的输入的openpty和select调用。