pty和tty是什么意思?

why*_*why 226 c unix networking vocabulary tty

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

caf*_*caf 227

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

pty是一个伪终端 - 它是一个软件实现,它作为终端出现在附加程序中,但不是直接与"真实"终端通信,而是将输入和输出传输到另一个程序.

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


Cha*_*tin 213

"tty"最初表示"teletype","pty"表示"伪电传".

在UNIX中,/ dev/tty*是任何充当"电传打字机"的设备,即终端.(称为电传打字机,因为这是我们在那些愚昧的日子里对终端所拥有的.)

pty是一个伪节点,一个设备条目,就像进程读取和写入的终端一样,但是由其他东西管理.他们首先出现(我记得)X Window和屏幕之类的东西,你需要的东西就像一个终端,但可以从另一个程序中使用.

  • 将终端视为一个对象:它将一端的东西连接到另一端的stdin和stdout.真正的TTY连接到物理终端.PTY连接到程序,例如xterm,或命令窗口,或shell窗口.然后它对程序说谎并说它真的是*终端,诚实.在PTY之前,你用这样的程序连接管道,但是管道有很大的不同,比如没有流量控制.PTY似乎解决了这个问题. (15认同)
  • @CharlieMartin你的意思是pty是什么"就像一个终端?" 我们为什么要这样的东西?另一个程序如何利用这个pty?我的猜测是pty将命令或其他内容转发给程序的for-real终端(tty).它是否正确?如果没有,请忽略我的猜测,请回答我评论的第一部分. (5认同)
  • @CharlieMartin"真正的TTY连接到物理终端".那么Linux控制台呢?例如,在Ubuntu系统中,"Ctrl-Alt-F {1..6}"上有Linux控制台,它们连接到`/ dev/tty {1..6}`.Linux控制台不是物理终端,但它连接到`ttyN`(而不是'ptyN`).我在这里错过了什么吗? (3认同)
  • 只是你几乎无法对 LINUX 做出任何明确的说法,而不会出现奇怪的边缘情况。在这种情况下,Linux 控制台是一个内核功能,它使用 /dev/tty dev 条目,但随后连接到一堆东西以传递给用户。https://en.wikipedia.org/wiki/Linux_console (2认同)

wno*_*ise 18

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

pty:伪类型.内核提供伪节点端口连接到模拟终端的程序,如xterm或屏幕.


nik*_*tis 17

如果你运行没有命令行参数的mount命令,它显示你系统上安装的文件系统,你会发现一行如下所示:/ 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 is a virtual di'>/dev/pts/7输出显示在新的终端窗口中.


Ton*_*ski 11

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

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

电传打字机一词是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在它的命令外壳中仍然有行式打印机终端端口的概念,用于输出到打印机。

  • 您提供的第二张图片是 VT100 视频终端。这仍然是物理 TTY(尽管 20 世纪 70 年代的 TTY 制造商已从打印机转向视频显示器),并且绝对不是 PTY(软件终端)。值得注意的是,像您所描绘的 DEC VT100 这样的老式视频终端无法运行软件,更不用说操作系统了,因为它们不是计算机。 (5认同)