目前我需要开发一些能够通过串口线与思科设备进行通信的程序。 我想在我的开发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 -