在伪tty上运行slattach

时间:2011-09-20 15:25:42

标签: linux serial-port ip tty

我尝试通过linux os上的一对伪tty打开网络连接。

# slattach -v /dev/ptmx
cslip started on /dev/ptmx interface sl0

好的,这是伪tty的“创建方”。

我可以查看/ dev / pts并在那里找到新的pty。 如果我现在尝试在这一边使用slattach我得到了:

slattach -v /dev/pts/3
slattach: tty_open(/dev/pts/3, RW): Input/output error

我用strace跟踪:

28 5505  write(1, "slattach: tty_open: trying to op"..., 46) = 46
29 5505  open("/dev/pts/3", O_RDWR|O_NONBLOCK) = -1 EIO (Input/output error)
30 5505  write(2, "slattach: tty_open(/dev/pts/3, R"..., 55) = 55
31 5505  exit_group(3)

所有这些都发生在ubuntu的不同发行版上,在10.04和11.04测试,都失败了。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可能需要查看手册页pty(7)

基本上,/ dev / ptmx使用Unix 98伪终端接口,并要求您的程序使用grantpt(3)和unlockpt(3)。 slattach(打开/ dev / ptmx,而不是另一个)不会这样做,并且任何尝试打开与主服务器关联的从属伪终端的程序都会失败,正如您所经历的那样。

您可以通过使用外部重载open()调用来强制slattach执行grantpt()和unlockpt() 例程,see this example