这可能是真正的基本问题,但我想彻底理解。


什么是伪终端? (tty / pty)
我们为什么需要它们?他们是如何引入的,有什么需要?
他们过时了吗?我们不再需要它们了吗?有什么替换的东西吗?
有用的用例吗?

我做了什么:


阅读手册页-有一些信息,但没有确切的图片。
试图从Richard Stevens的Unix Network Programming中阅读它们。
获得了一些信息,但没有why?部分。


评论

我也这样认为,尤其是如果这里没有出现像openpty / forkpty这样的专业问题。

尝试将其标记为要迁移,但是Linux / Unix不是有效的迁移目标。尝试梯度下降,“超级用户”已经比该站点好一点,也许他们可以将其路由到更好的站点。

这是一个很好的概述:linusakesson.net/programming/tty/index.php

@nos:哇!那是一个很棒的链接。我一直在寻找的东西。谢谢吨:)

Linux编程接口的第62章和第64章可能会有所帮助

#1 楼


实际上不具有物理终端功能的设备。由终端仿真器(例如xterm)创建。在pty(7)联机帮助页中有更详细的信息。
传统上,UNIX的概念是控制一组进程的终端,并且在构建许多I / O功能时都考虑到了终端。伪终端处理例如^ C之类的某些控制字符。
它们并不过时,并已在包括ssh在内的许多程序中使用。
ssh。


评论


谢谢@thiton。您能否详细说明一下ssh的示例?如何使用pty / tty?主/从角色在ssh中如何发挥作用?

–哈里
2011-09-20 18:17

ssh为它创建的外壳分配一个pty。外壳连接到从属端,从而可以依靠普通终端的所有功能(例如,如果我没记错的话,可以使用termcap),而ssh守护程序连接到主端并在那里发送和接收其输入。

–thiton
2011-09-20 18:24

#2 楼

答案是名字-“ Pseudo”的意思是“不是真品,但有外观”。

在第一个终端中,总是有一块硬件与相关设备相连,无论是显示硬件或串行端口。

借助xwindows,telnet和ssh,需要使用“伪设备”软件来代替显示硬件。它们是“伪终端” ...软件,它模拟终端硬件,以与物理设备相同的方式处理输入和输出,从而使连接的软件不知道没有连接任何真实的设备。

评论


因为现在我们有许多应用程序需要访问同一硬件,所以每个应用程序都通过“伪”终端使用硬件吗?

–哈里
2011-09-20 18:15

我扩大了答案-希望它能澄清。

–gview
2011-09-20 18:29

不,我们只是实际上不再拥有这种硬件。 xterm模仿了经典终端,仅此而已。

–thiton
2011-09-20 18:29

@thiton:当您说仿真时,多数民众赞成在软件部分,不是吗?

–哈里
2011-09-20 18:48

因此,今天在UNIX上下文中使用“终端”一词实际上是错误的吗?因为一切都是“伪终端”?

– A. Sallai
17年6月8日在7:29

#3 楼

伪终端是串行线的仿真器。它们为telnet,ssh和xterm shell提供端点。

评论


而且它们是古老的文物(实际上,shell /文本应用程序仍在通过模拟串行打字机的设备上进行交互,就像40年前一样...)我们仍然需要它们,因为没有替代品: -(

–否
2011-09-20 17:55

好吧,如果您考虑使用航站楼,我认为您只需要一堆来来往往的信件...

–迭戈塞维利亚
2011-09-20 17:59

@Diego Sevilla最初的unix发明者取消了Plan 9中的tty / ptys,那里的终端几乎只使用输入/输出数据流。但是在* nix中,ttys仍然存在,并且被控制台和终端仿真器使用,例如控制终端大小,流控制,行缓冲,特殊按键事件和其他内容。

–否
2011-09-20 18:06

@nos:事实证明它们不是我们引以为傲的古老文物。最后,在Windows中尝试不使用它们会很痛苦。 Powershell远程处理的使用受到一件事的阻碍:交互式控制台程序无法正常工作,无法正确运行。没有像DOS EDIT或vi这样的合理文本编辑器的可能性。

–约书亚
15年12月15日在17:43

@Joshua另一个相反的证据是Unix的原始设计者创建了Plan 9 OS,他们完全取消了ttys,但是他们以这种方式(甚至更多)实现了远程操作。

–否
15年12月15日在19:23