Linux上的软件串行端口回送

目前我需要开发一些能够通过串口线与思科设备进行通信的程序。 我想在我的开发linux机器上构buildtesting环境。 所以,我发现了dynamips cisco仿真器。 这个仿真器可以通过串口线提供'-U / dev / ttyS0'选项的接口。 那么,这将导致dynamips打开硬件串口并通过它进行通信。 我能够从另一台Linux机器连接到这个串口客户端的硬件串行端口,如minicom。

但是,因为我使用virtualbox的两个linux机器,我通过virtualbox的能力连接到串行端口转发串行端口到命名pipe道。 这个scheme似乎正在工作,但很冗长。 我正在寻找一种方法来在单个linux机器上运行dynamips和minicom。

我发现伪terminal可能对我有用。 但是我试图用'-U / dev / ptmx'运行dynamips,然后用minicom连接到/ dev / pts / … port,反之亦然。 在这两种情况下,双方都有input/输出错误。

不幸的是,现代的伪终端并不容易。 使用posix_openpt() open("/dev/ptmx")posix_openpt()open("/dev/ptmx") ,必须在主服务器及其对应的从服务器可用之前调用grantpt()unlockpt() 。 ( openpty()等实用功能简化了这一点。)

作为一个解决方法,这个方便的社会可能是有用的。

 # 1号航站楼
 socat pty:link = $ PWD / pts unix -l:$ PWD / ptm-pipe&
 dynamips -U $ PWD / pts

 #终端2
 socat unix:$ PWD / ptm-pipe  -