278

我注意到在一些开源项目中提到了很多ptytty有人可以告诉我它们是什么意思,它们之间有什么区别吗?

4

5 回答 5

262

“tty”最初的意思是“电传打字机”,而“pty”的意思是“伪电传打字机”。

在 UNIX 中,/dev/tty* 是充当“电传打字机”的任何设备,即终端。(称为电传打字机,因为那是我们在那些昏昏欲睡的日子里使用的终端机。)

pty 是一个pseudotty,一个设备条目,它就像一个终端到那里进行读写的进程,但由其他东西管理。它们首先出现(我记得)用于 X Window 和 screen 等,在那里你需要一些像终端但可以从另一个程序中使用的东西。

于 2010-12-13T06:21:43.810 回答
257

tty 是一个终端(它代表电传打字机- 原始终端使用行式打印机进行输出,使用键盘进行输入!)。终端基本上只是一个用户界面设备,它使用文本进行输入和输出。

pty 是一个伪终端——它是一种软件实现,在附加程序中看起来就像一个终端,但它不是直接与“真实”终端通信,而是将输入和输出传输到另一个程序。

例如,当您 ssh 进入机器并运行ls时,该ls命令会将其输出发送到伪终端,而伪终端的另一端连接到 SSH 守护程序。

于 2010-12-13T06:25:14.410 回答
25

tty:电传打字机。通常是指连接终端的计算机的串行端口。

pty:伪电传。内核提供了连接到模拟终端程序的伪串行端口,例如 xterm 或 screen。

于 2010-12-13T06:23:52.847 回答
22

如果您在没有命令行参数的情况下运行 mount 命令,它会显示安装在您系统上的文件系统,您会注意到一行看起来像这样: none on /dev/pts type devpts (rw,gid=5, mode=620) 这表示一种特殊类型的文件系统 devpts 挂载在 /dev/pts 。该文件系统不与任何硬件设备关联,是由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 输出出现在新终端窗口中。

于 2015-11-14T02:40:30.650 回答
15

Atty是计算机上的物理 终端设备端口(通常是串行端口

Teletype tty也可以由作为模块在内核空间中运行的计算机程序来模拟。

电传打字机一词是电报打字机或1930 年代电传打字机设备的缩写,它本身就是一种电磁设备,取代了 1830 年代和 1840 年代的电报编码机。

电传打字机
TTY - 电传打字机 1930 年代

Apty是计算机操作系统内核提供的一个 p 伪远程类型端口,用于连接用户端终端仿真软件程序,例如 ssh xterm或screen

在此处输入图像描述  PTY - 伪电传

终端只是使用文本进行输入和输出的计算机用户界面。


操作系统实现

这些使用p远程类型端口,但是,它们的命名和实现略有不同。

Linux/dev上挂载了一个特殊的文件系统devpts (' s ' 大概代表serial),它为您打开的每个新终端窗口创建一个相应的条目,例如/dev/pts/dev/pts/0


macOS/FreeBSD也使用/dev文件结构,但是它们为您打开的每个新终端窗口使用编号TTY命名约定ttys,例如/dev/ttys002


Microsoft Windows的命令外壳中仍然有行式打印机终端端口的概念,LPT用于输出到打印机。

于 2019-11-09T13:48:35.193 回答