目前我需要开发一些程序,通过串行线路与cisco设备进行通信。我想在我的开发linux机器上构建测试环境。所以,我找到了dynamips cisco模拟器。该仿真器可以通过串行线提供“-U / dev / ttyS0”选项。好吧,这会导致dynamips打开硬件串口并通过它进行通信。我可以使用像minicom这样的串行客户端从另一台Linux机器连接到这个硬件串口。
但是,由于我在两台linux机器上都使用了virtualbox,我通过virtualbox将串口转发到命名管道。这个方案似乎有效,但非常冗长。我正在寻找一种在单个linux机器上运行dynamips和minicom的方法。
我发现伪终端在我的情况下可能很有用。但是我试图用'-U / dev / ptmx'运行dynamips,然后用minicom连接创建/ dev / pts / ...端口,反之亦然。在这两种情况下,我都有输入/输出错误。
答案 0 :(得分:6)
不幸的是,现代的伪终端并不那么容易。使用posix_openpt()
或open("/dev/ptmx")
打开主设备后,必须先在主设备FD上调用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 -