【问题标题】:What do pty and tty mean?pty 和 tty 是什么意思?
【发布时间】:2011-05-24 12:00:36
【问题描述】:

我注意到在一些开源项目中多次提到ptytty,有人能告诉我它们的含义以及它们之间的区别吗?

【问题讨论】:

  • 人们可能想阅读 pty(7) 手册页(就像在这个 link 中一样),其中 pty/ttys 被描述为代表主/从端的预先创建的文件对伪终端(参见关于 BSD 风格的描述)。
  • @wangkaibule 这应该是一个答案!

标签: c unix networking tty vocabulary


【解决方案1】:

“tty”原意为“电传打字机”,“pty”意为“伪电传打字机”。

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

pty 是一个伪实体,它是一个设备条目,它的作用就像一个终端,用于读取和写入进程,但由其他东西管理。它们第一次出现(我记得)是为 X Window 和 screen 等而出现的,在那里你需要一些像终端一样但可以从另一个程序中使用的东西。

【讨论】:

  • 我认为 ptys 添加到 Unix 主要是为了支持 Telnet、rsh 和 rlogin。
  • @CharlieMartin 你是什么意思 pty 是“像终端一样的东西”?为什么我们想要这样的东西?另一个程序如何利用这个 pty?我的猜测是 pty 将命令或其他东西中继到程序的真实终端(tty)。它是否正确?如果没有,请忽略我的猜测,请回答我评论的第一部分。
  • 将终端视为一个对象:它将一端连接到标准输入,另一端连接标准输出。一个真正的 TTY 连接到一个物理终端。一个 PTY 连接到一个程序,例如 xterm,或者一个命令窗口,或者一个 shell 窗口。然后它对程序撒谎并说它真的是如此一个终端,诚实的。在 PTY 之前,您将这样的程序与管道连接,但管道有很大的不同,比如没有流量控制。 PTY 似乎可以解决这个问题。
  • @CharlieMartin “真正的 TTY 连接到物理终端”。 Linux 控制台呢?例如,在 Ubuntu 系统中,Ctrl-Alt-F{1..6} 上有 Linux 控制台,它们连接到 /dev/tty{1..6}。 Linux 控制台不是物理终端,但它连接到ttyN(而不是ptyN)。我在这里错过了什么吗?
  • 只是你几乎不能说任何关于 LINUX 不会有奇怪的边缘情况的确切信息。在这种情况下,Linux 控制台是一个内核功能,它使用 /dev/tty dev 条目,然后连接到一堆东西以向用户发送。 en.wikipedia.org/wiki/Linux_console
【解决方案2】:

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

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

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

【讨论】:

  • 您能否给出更多“精确”的 PTY 示例?我仍然不明白他们是从哪里来的,甚至他们是怎么称呼的。谢谢
  • 有人可以帮助了解基于*nix 的操作系统何时以及如何创建此伪终端。
  • @darth_coder:它们是在应用程序请求时创建的。当您执行诸如打开新的图形终端窗口或远程登录等操作时,就会发生这种情况。
  • @caf 你能命名负责生成终端的内核模块或守护进程吗?
  • @darth_coder:任何应用程序都可以这样做。 sshdxterm 是两个典型的例子。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    如果您在没有命令行参数的情况下运行 mount 命令,则会显示 安装在系统上的文件系统,你会注意到一行看起来像东西 像这样: 无 /dev/pts 类型 devpts (rw,gid=5,mode=620) 这表明一种特殊类型的文件系统 devpts 安装在 /dev/pts 。这 与任何硬件设备无关的文件系统是一个“神奇”的文件系统 它是由 Linux 内核创建的。类似于 /proc 文件系统

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

    Linux 为您打开的每个新终端窗口创建一个 PTY,并显示一个对应的 /dev/pts 中的相应条目。PTY 设备就像一个终端设备——它接受 从键盘输入并显示在其中运行的程序的文本输出。 PTY 是有编号的,PTY 编号是对应条目的名称 /dev/pts .

    对于 例如,如果新终端窗口的 PTY 编号为 7,则从 另一个窗口: % echo ‘我是一个虚拟的 di’ > /dev/pts/7 输出出现在新的终端窗口中。

    【讨论】:

      【解决方案5】:

      tty 是一个物理 t终端-telety计算机上的pe端口(通常是串行端口)。

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

      teletype 一词是 telegraph typewriter 的缩写,或 1930 年代的 teletypewriter 设备 - 它本身就是一种电磁设备,取代了1830 年代和 1840 年代的telegraph 编码机。


      TTY - 电传打字机 1930 年代

      pty是计算机提供的pteletype端口系统内核,用于连接用户登陆终端仿真软件程序,例如 ssh、xterm 或 screen。

      PTY - PseudoTeletype

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


      操作系统实现

      这些使用 pseudo-teletype 端口,但是它们的命名和实现略有不同。

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


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


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

      【讨论】:

      • 您提供的第二张图片是VT100视频终端。这仍然是一个物理 TTY(尽管 TTY 制造商在 1970 年代已经从打印机转向视频显示器),而且绝对不是 PTY(软件终端)。值得注意的是,像您所描绘的 DEC VT100 这样的老式视频终端无法运行软件,更不用说操作系统了,因为它们不是计算机。
      • @dwk 关于 VT100 视频终端的发现很好。我已经更新了照片。
      猜你喜欢
      • 2011-10-30
      • 2023-03-08
      • 2023-04-03
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多