关于 TTY 和 PTY 的困惑

关于 TTY 和 PTY 的困惑

我试图理解这个话题,但显然,对于我的大脑来说这太难了。

终端设备条目通常驻留在两个目录中:/dev 和/dev/pts。 /dev 目录包含虚拟控制台(例如/dev/tty1)和BSD 伪终端的条目。 /dev/pts 目录包含(System V 风格)伪终端从属设备的条目

这是摘自《Linux程序接口》一书的。

根据上面的断言,在/dev/pts目录中我可以找到伪终端的从属部分。

那为什么我使用tty它打印的命令呢/dev/pts/0?上面的说法不完整吗?我的意思是,终端和伪终端之间有关系吗?因为如果/dev/pts我只能找到伪终端对的辅助部分,那么终端是否像伪终端一样实现?

总是来自“Linux程序iterface”一书:

在正常的登录会话中,shell 直接连接到用户的终端。

所以我可以根据这个断言制定一个方案:

在此输入图像描述

但是,如果我的终端与从设备关联(如 tty 命令所说),则该方案根本不正确,它会变成:

在此输入图像描述

考虑到这一点后,终端是像伪终端对(具有从属和主控)一样实现的,还是只是像从属文件(或类似的东西)一样实现?

答案1

终端和伪终端之间有关系吗?

终端最初是一个东西像这些或者像这些。 unix 系统上的终端设备文件 ( /dev/tty1) 通常通过串行接口通过操作系统连接到此类硬件。

如果写入文件,输出将出现在打印机(ASR33)或屏幕(VT100)上,如果您在键盘上键入,则可以从文件中读取输出。此外,它还支持特殊命令(ioctl)来设置串行线速度、通信协议等。

伪终端是终端的直接替代品,其中另一端不是某种硬件,而是第二个“文件”(主文件)。从端的行为与硬件终端的设备文件完全相同,因此您可以将 shell 连接到它。主部分可以被另一端的应用程序用来模拟硬件终端。例如,xterm使用伪终端对,并使用主控部分与X系统进行接口。

有一个小问题:主部分在文件系统中永远不可见。如果你愿意的话,它是一个“隐形文件”。

那么为什么如果我使用 tty 命令它会打印 /dev/pts/0 ?

因为您正在输入的 shell 可能正在一个xterm或类似的终端模拟器中运行。如今很少有人使用真正的硬件终端。

是的,如果您将“终端”替换为“终端模拟器”(模拟终端的应用程序),您的第二个图就很接近了。

如今,许多人在指“终端模拟器”时只说“终端”。

相关内容