为什么对 xterm 或其他东西使用 pts

为什么对 xterm 或其他东西使用 pts

我一直在多个站点上阅读到 pts 设备文件用于“不直接连接到硬件”(ssh、telnet)的伪终端。

既然在你的机器上运行的 xterm 直接连接键盘上的输出和屏幕上的显示,为什么它使用伪终端设备文件呢?

我读了关于 ttys pts 的其他问题,...它似乎没有涵盖这一点..

另外,如果“伪终端”最终是一个具有输入和输出的设备文件,那么它的来源为何重要?

提前致谢

答案1

关于在内核内部管理的终端,有一些事情,例如键盘信号(例如映射Ctrl+Z停止信号),管理前台后台进程组,极其简陋的行版机制,发送叹息当终端消失时,并且其他细节

对于硬件终端,终端设备位于应用程序和硬件之间。终端设备的类型取决于硬件的类型,例如(在 Linux 上)/dev/tty1PC 键盘和屏幕、/dev/ttyS0通过串行线路连接的终端、/dev/ttyUSB0通过 USB 连接的终端等。

+-------------+         +-----------------+         +-------------+
| text mode   |         | kernel          |         | peripheral  |
| application |<------->| e.g. /dev/ttyS0 |<------->| e.g. on a   |
|             |         |                 |         | serial port |
+-------------+         +-----------------+         +-------------+

与一个终端仿真器,原理是一样的,连接仍然经过内核驱动,但另一端也是一个进程。

+-------------+         +-----------------+         +-------------------+
| text mode   |         | kernel          |         | terminal emulator |
| application |<------->| /dev/pts/*      |<------->| e.g. xterm, sshd, |
|             |         |                 |         |      screen, ...  |
+-------------+         +-----------------+         +-------------------+

Xterm、telnetd1、sshd 等不(直接)连接到任何硬件。当您在键盘上键入按键时,信息会通过键盘(物理设备)到达内核内的键盘驱动程序,然后将其中继到正在侦听键盘设备的进程。如果您处于图形会话中,则该过程是X服务器然后将信息转发给窗口被聚焦的进程。相反,当 xterm 内运行的程序产生输出时,xterm 会将其转换为 X 服务器在特定位置以特定字体显示特定字符​​的命令。处理输入或产生输出的进程附近不涉及任何硬件,并且可能根本不涉及硬件(例如,如果 xterm 窗口在屏幕上不可见,或者如果终端由 telnet 或 telnet 提供,则至少本地不存在) ssh 服务器)。

1终端位于远程(服务器)端。

答案2

这是我找到的一个可以回答问题的链接。它基本上说它们是为了将终端仿真移动到用户空间而创建的。它位于页面顶部。

http://www.linusakesson.net/programming/tty/index.php

相关内容