目前,我需要开发一些程序,通过串行线路与cisco设备进行通信.我想在我的开发linux机器上构建测试环境.所以,我找到了dynamips cisco模拟器.该仿真器可以通过串行线提供“-U / dev / ttyS0”选项.好吧,这会导致dynamips打开硬件串口并通过它进行通信.我能够通过串口客户端(如minicom)从另一台Linux机器连接到这个硬件串口.
但是,由于我在两台linux机器上都使用了virtualbox,我通过virtualbox将串口转发到命名管道.这个方案似乎有效,但非常冗长.我正在寻找一种在单个linux机器上运行dynamips和minicom的方法.
我发现伪终端在我的情况下可能很有用.但是我试图用’-U / dev / ptmx’运行dynamips,然后用minicom连接创建/ dev / pts / …端口,反之亦然.在这两种情况下,我都有输入/输出错误.
解决方法:
不幸的是,现代的伪终端并不那么容易.在使用posix_openpt()或open(“/ dev / ptmx”)打开主服务器之后,必须在主服务器及其相应的从服务器可用之前调用主服务器上的grantpt()和unlockpt(). (openpty()等实用程序函数简化了这一点.)
作为一种解决方法,可以使用方便的socat.
# terminal 1
socat pty:link=$PWD/pts unix-l:$PWD/ptm-pipe &
dynamips -U $PWD/pts
# terminal 2
socat unix:$PWD/ptm-pipe -
标签:linux,serial-port,loopback,pty
来源: https://codeday.me/bug/20190607/1191656.html