我注意到在一些开源项目中很多提到
pty
和tty
,有人可以告诉我它们是什么意思以及它们之间有什么区别吗?
tty
最初的意思是 “电传打字机”,而 "pty"
的意思是 “伪电传打字机”。
在 UNIX 中,
/dev/tty*
是任何类似于 “电传打字机” 的设备,即:终端。 (称为电传打字机,因为这就是我们在那些黑暗的日子里所拥有的终端。)
A
pty
是一个 pseudotty,一个设备条目,它的作用就像进程在那里读写的终端,但由其他东西管理。它们首先出现(我记得)用于 X Window 和 screen 等,您需要一些类似于终端但可以从另一个程序使用的东西。
A
tty
是一个 terminal (它代表 teletype - 原始终端使用行式打印机进行输出,使用键盘进行输入!)。 终端基本上只是一个使用文本进行输入和输出的用户界面设备。
A
pty
是一个 伪终端 - 它是一种软件实现,对于附加程序来说就像终端一样,但它不是直接与“真实”终端通信,而是将输入和输出传输到另一个程序。
例如,当您通过 ssh 登录到计算机并运行
ls
时,ls
命令会将其输出发送到伪终端,该伪终端的另一端连接到 SSH 守护进程。
tty:电传打字机。 通常指计算机的串行端口,连接终端。
pty:伪电传打字机。 内核提供伪串行端口连接到模拟终端的程序,例如 xterm 或 screen。
如果运行不带命令行参数的 mount 命令(该命令会显示系统上安装的文件系统),您会注意到一行如下所示:
none on /dev/pts type devpts (rw,gid=5,mode=620)
这表明在
/dev/pts
处安装了一种特殊类型的文件系统devpts。这个文件系统不与任何硬件设备关联,是由 Linux 内核创建的“神奇”文件系统。它类似于 /proc
文件系统
与
/dev
目录一样,/dev/pts
包含与设备对应的条目。但与普通目录 /dev
不同,/dev/pts
是由 Linux 内核动态创建的特殊目录。目录内容随时间变化
并反映系统运行状态。
/dev/pts
中的条目对应于伪终端(或伪TTY,或PTY)。
Linux 为您打开的每个新终端窗口创建一个 PTY,并在
/dev/pts
中显示相应的条目。 PTY 设备的作用类似于终端设备 - 它接受来自键盘的输入并显示其中运行的程序的文本输出。 PTY 是有编号的,PTY 编号是对应条目的名称
/dev/pts
。
例如,如果新终端窗口的 PTY 编号为 7,则从另一个窗口调用此命令:
echo ‘I am a virtual di ’ > /dev/pts/7
输出出现在新的终端窗口中。 您可以尝试将 7 交换为另一个数字,并且根据打开的终端给出的数字,您将在另一个终端窗口上看到输出。
/dev/pts
是公交车(邮局)来做这件事!
A
tty
是计算机上的物理 terminal-teletype 端口(通常是串行端口)。
Teletype tty 也可以由作为内核空间中的模块运行的计算机程序来模拟。
单词 teletype 是 telegraph typewriter 的缩写,或 1930 年代的 teletypewriter 设备 - 本身是 1830 年代和 1840 年代 telegraph 编码机的替代品。
A
pty
是计算机操作系统内核提供的 pseudo-teletype 端口,用于连接用户登陆终端模拟软件程序,例如 ssh、xterm 或 screen。
终端只是使用文本进行输入和输出的计算机用户界面。
这些使用 pseudo-teletype 端口,但是,它们的命名和实现略有不同。
Linux 在 /dev 上安装一个特殊的文件系统 devpts('s' 可能代表 serial),为您打开的每个新终端窗口在
/dev/pts
中创建一个相应的条目,例如/dev/pts/0
macOS/FreeBSD 也使用 /dev 文件结构,但是,它们对您打开的每个新终端窗口使用编号的
TTY
命名约定 ttys
,例如/dev/ttys002
Microsoft Windows 仍然具有用于在其命令外壳内用于输出到打印机的行式打印机终端的
LPT
端口的概念。
警告:consoletype 现已弃用,并将在不久的将来删除 警告:请使用 tty (1) 代替!更多信息:“man 1 tty” pty
如何解决 amazonlinux2023 中的此错误