4

目前我需要开发一些程序,将通过串行线路与思科设备进行通信。我想在我的开发 linux 机器上构建测试环境。所以,我找到了dynamips cisco emulator。该仿真器可以通过带有“-U /dev/ttyS0”选项的串行线提供接口。好吧,这会导致 dynamips 打开硬件串行端口并通过它进行通信。我可以使用 minicom 等串行客户端从另一台 linux 机器连接到这个硬件串行端口。

但是,由于我在两台 linux 机器上都使用了 virtualbox,所以我通过 virtualbox 功能链接串行端口以将串行端口转发到命名管道。该方案似乎有效,但非常多余。我正在寻找一种在单个 linux 机器上运行 dynamips 和 minicom 的方法。

我发现伪终端在我的情况下可能很有用。但我尝试使用“-U /dev/ptmx”运行 dynamips,然后与 minicom 连接以创建 /dev/pts/... 端口,反之亦然。在这两种情况下,我都有输入/输出错误。

4

1 回答 1

6

不幸的是,现代伪终端并不那么容易。posix_openpt()用或打开主控后open("/dev/ptmx"),必须在主控FD上调用grantpt()unlockpt(),然后主控FD及其对应的从属设备才能使用。(openpty()等实用程序功能简化了这一点。)

作为一种解决方法,曾经方便的socat可能有用。

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

# 终端 2
socat unix:$PWD/ptm-pipe -
于 2010-02-03T16:39:11.760 回答