Bootstrap

Linux内核TTY子系统有什么(5)

接前一篇文章:Linux内核TTY子系统有什么(4)

本文内容参考:

Linux TTY子系统框架-CSDN博客

一文彻底讲清Linux tty子系统架构及编程实例-CSDN博客

linux TTY子系统(3) - tty driver_sys tty device driver-CSDN博客

Linux TTY 子系统框架_linux tty体系-CSDN博客

LinuxTTY 子系统2_tty子系统-CSDN博客

Linux TTY Driver_tty driver配置-CSDN博客

UART驱动学习二(TTY体系)_serdev-CSDN博客

解密TTY - QiuhaoLi - 博客园

特此致谢!

一、TTY是什么?

2. TTY的分类

Linux系统的终端设备一般分为控制台、伪终端pty、串口终端(/dev/ttySn)和其它类型。

(4)伪终端PTY

伪终端(Pseudo Terminal,简称PTY)是在Unix和Linux系统中用于模拟真实物理终端的一种机制。它允许程序像与真实终端交互一样与用户或其它进程进行通信,但实际上并不依赖物理设备。

伪终端是终端的发展,为满足现代需求(比如网络登录、Xwindow窗口的管理)。它是成对出现的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。它多用于模拟终端程序,是远程登录(telnet、ssh、xterm等)后创建的控制台设备。

伪终端的工作原理

伪终端系统主要分为两部分:

 1)主设备(master device)

  • 通常表示为/dev/ptmx或/dev/ptm。
  • 应用程序通过此设备与伪终端进行交互,接收和发送数据。
  • 当一个进程打开/dev/ptmx文件时,会获得一个新的伪终端主设备文件描述符,并自动在/dev/ptx目录下创建一个新的从设备文件。

2)从设备(slave device)

  • 表示为/dev/pts/N,其中N是一个数字,代表伪终端的编号。
  • 提供与真实终端相同的接口,但没有物理硬件依赖。
  • 具有标准输入、标准输出和标准错误输出等功能。

伪终端设备文件详解

1)/dev/ptmx

  • 是伪终端系统的主设备文件。
  • 用于创建一个新的伪终端对(主设备和从设备)。
  • 通过打开此文件并调用相应的系统调用(如ioctl),可以获取与从设备相关的文件描述符和信息。通过ioctl系统调用和TIOCGPTN命令获取从设备的编号。

2)/dev/pts/N

  • 是伪终端系统的从设备文件。
  • 每个从设备文件对应一个唯一的伪终端编号N。
  • 提供与真实终端相似的接口,允许用户或其它进程进行输入/输出操作。

伪终端的使用场景

  • 远程连接

 如通过SSH、Telnet等协议进行的远程会话。

  • 窗口管理器中的终端模拟

 如GNOME Terminal、Konsole等图形终端模拟器。

  • 脚本自动交互

 用于自动化测试、批量操作等场景。

关于伪终端的更多细节介绍,请看下回。

;