pty和tty是什么意思?


237

我注意到有很多提到的ptytty一些开源项目,可能有人能告诉我做他们的意思和它们之间有什么区别呢?谢谢!

Answers:


225

“ tty”最初表示“ teletype”,“ pty”表示“ pseudo-teletype”。

在UNIX中,/ dev / tty *是充当“ teletype”(即终端)的任何设备。(之所以称为电传打字机,是因为那是我们在那些陷入困境的日子里为终端所用的。)

pty是一个伪条目,是一个设备条目,其作用类似于该进程在此处进行读取和写入的终端,但由其他事物来管理。它们首先出现在X Window和Screen等设备上(我记得),在这里您需要的功能类似于终端,但可以在其他程序中使用。


我认为pty添加到Unix主要是为了支持Telnet,rsh和rlogin。
弗雷德·富

5
@CharlieMartin您的意思是pty是“充当终端机”吗?我们为什么要这样?以及另一个程序如何利用此pty?我的猜测是pty将命令或某些内容中继到程序的真实终端(tty)。这样对吗?如果不是,请忽略我的猜测,请回答我的评论的第一部分。
OKGimmeMoney

16
将终端视为一个对象:它将一端连接到stdin和stdout的另一端。实际的TTY连接到物理终端。PTY连接到程序(例如xterm)或命令窗口或外壳程序窗口。然后对程序说谎,说它真的一个终端,老实说。在PTY之前,您将这样的程序与管道连接在一起,但是管道之间存在很大的差异,例如没有流量控制。PTY似乎可以解决此问题。
查理·马丁

3
@CharlieMartin“真实的TTY连接到物理终端”。Linux控制台又如何呢?例如,在Ubuntu系统中,有Linux控制台Ctrl-Alt-F{1..6},它们已连接到/dev/tty{1..6}。Linux控制台不是物理终端,但已连接到ttyN(而不是ptyN)。我在这里想念什么吗?
Utku

1
只是您几乎不能说出关于LINUX的任何明确内容,而不会出现奇怪的情况。在这种情况下,Linux控制台是一个内核功能,该功能使用/ dev / tty dev条目,但随后连接到许多东西以向用户显示。en.wikipedia.org/wiki/Linux_console
查理·马丁

234

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

pty是伪终端-它是一个软件实现,在附加程序中像终端一样出现,但是与其直接与“真实”终端进行通信,它不将输入和输出传输到另一个程序。

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


1
您能否再举一些“精确”的PTY示例?我仍然不知道它们来自何处,甚至如何称呼它们。谢谢
user3085931 2014年

有人可以帮助您何时以及如何*nix基于操作系统创建此伪终端。
克里希纳(Krishna Oza)

@darth_coder:它们是在应用程序请求时创建的。当您执行诸如打开新的图形终端窗口或远程登录之类的操作时,就会发生这种情况。
caf

@caf可以命名负责产生终端的内核模块或守护程序。
克里希纳(Krishna Oza)

@darth_coder:任何应用程序都可以这样做。 sshdxterm是两个典型的例子。
caf

21

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

pty:假名型。内核提供的伪串行端口连接到模拟终端(例如xterm或screen)的程序。


19

如果您运行不带命令行参数的mount命令,该命令显示系统上已挂载的文件系统,您会注意到以下内容:/ dev / pts上没有键入type devpts(rw,gid = 5, mode = 620)表示在/ dev / pts上挂载了一种特殊类型的文件系统devpts。该文件系统与任何硬件设备都不相关,是由文件系统创建的“魔术”文件系统。 Linux内核。它类似于/ proc文件系统

与/ dev目录类似,/ dev / pts包含与设备相对应的条目。但是/ dev / pts是普通目录,与/ dev不同,/ dev / pts是由Linux内核动态创建的特殊目录。目录的内容随时间变化并反映运行系统的状态。/ dev / pts中的条目对应于伪终端(或伪TTY或PTY)。

Linux为您打开的每个新终端窗口创建一个PTY,并在/ dev / pts中显示相应的条目。PTY设备的作用类似于终端设备-接受键盘输入并显示其中运行的程序的文本输出。PTY已编号,PTY号是/ dev / pts中相应条目的名称。

例如,如果新终端窗口的PTY编号为7,则从另一个窗口调用此命令:%echo'我是虚拟di'> / dev / pts / 7输出出现在新终端窗口中。


2

tty是一个物理 erminal- ELET ý PE的计算机(通常是一个串行端口)上的端口。

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

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

ptyp seudo- ELE TY由计算机操作系统内核提供了用于连接的软件程序模拟终端,如ssh,xterm的,或屏幕PE端口。

在此处输入图片说明
PTY-伪电话

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


操作系统实现

这些用p seudo- 牛逼 ELE TY PE口然而,它们的命名和实现有分歧一点。

Linux的安装一个特殊的文件系统devpts的/ dev(的“s”大概站立小号 erial)创建一个对应的条目/dev/pts为你打开每一个新的终端窗口,如/dev/pts/0


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


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.