Linux中tty、pty和pts的概念及区别
一、tty(终端设备的统称)
概念:tty一词源于Teletypes或teletypewriters,原指电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西。后来,随着技术的发展,键盘与显示器取代了电传打字机,所以现在“终端”一词更为贴切。终端是一种字符型设备,用于与计算机进行交互,tty则用来简称各种类型的终端设备。
特点:tty代表了所有类型的终端设备,包括物理终端(如串行端口终端)和逻辑终端(如伪终端)。
二、pty(虚拟终端)
概念:pty,即pseudo-tty,是虚拟终端的缩写。当我们远程telnet到主机或使用xterm等终端模拟器时,需要一个逻辑上的终端进行交互,这就是pty的作用。
特点:pty不是直接关联到物理设备的,而是由操作系统提供的逻辑设备。pty通常由master(主端)和slave(从端)两个部分组成,对master的操作会反映到slave上,从而实现两个程序之间的通信。
三、pts/ptmx(pts与ptmx结合使用,实现pty)
pts(pseudo-terminal slave):pts是pty的从端,用于与实际的用户程序进行交互。
ptmx(pseudo-terminal master):ptmx是pty的主端,用于管理pts,并处理来自pts的输入和输出。
结合使用:ptmx和pts配合使用,实现了pty的功能。当用户通过telnet、ssh等方式远程登录时,系统会创建一个pty设备对(一个ptmx和一个pts),用户的输入和输出会通过pts传递给ptmx,再由ptmx进行处理和转发。
四、区别与联系
tty与pty:tty是终端设备的统称,包括了物理终端和逻辑终端。pty是逻辑终端的一种,特指虚拟终端。
pty与pts/ptmx:pty是虚拟终端的统称,由ptmx(主端)和pts(从端)组成。ptmx负责管理pts,并处理来自pts的输入和输出。
应用场景:tty广泛应用于各种终端设备的命名和交互中。pty则主要用于远程登录和终端模拟器等场景,提供了逻辑上的终端交互功能。pts/ptmx则是pty的具体实现方式,通过它们实现了pty的功能。
五、Linux系统中的终端类型
串行端口终端:如/dev/ttySn,使用计算机串行端口连接的终端设备。
伪终端:如/dev/pty/、/dev/pts/n等,是逻辑上的终端设备,不直接关联到物理设备。
控制终端:如/dev/tty,是当前进程的控制终端的设备特殊文件。
控制台终端:如/dev/tty0、/dev/tty1等,是计算机显示器对应的终端设备,通常用于系统信息的输出和用户的登录。
六、示例与实验
在X Window系统下打开一个或多个终端窗口,执行ls /dev/pt*命令,可以看到系统中存在的pty设备文件。
关闭这些终端窗口后再次执行该命令,比较两次输出信息的变化,可以加深对pty设备动态创建和销毁的理解。


综上所述,tty、pty和pts在Linux系统中扮演着重要的角色,它们共同构成了Linux系统的终端体系。通过理解这些概念及其区别与联系,我们可以更好地理解和使用Linux系统中的终端设备。
