linux 系统 tty、pty 和 pts 的概念及区别
在 Linux 系统中,tty、pty 和 pts 是三个常见的概念,都是用于用户与系统进行交互的接口。它们之间存在一定的区别,下面对它们进行简单总结:
tty
tty的全称是Teletypewriter,表示字符终端设备。它最初是指通过串口连接到主机的打字机终端设备,现在指的是Linux主机上的虚拟控制台。- 在
Linux系统中,tty1-tty6代表的是绑定着本地物理控制台的虚拟终端。在Ubuntu系统中,可以通过Ctrl+Alt+F1~F6进行切换。tty7代表的是X11图形界面会话。
pty
pty的全称是Pseudo Terminal,表示伪终端设备。它实际上是一对字符设备,由master和slave两个部分组成,其中master类似于一个父进程,而slave类似于一个子进程。- 在
Linux系统中,大多数终端程序(如xterm)都是基于pty模拟出来的。当我们在中输入命令时,这些命令会先被传到slave端,然后再由master端将结果显示到xterm中。
pts
pts的全称是Pseudo Terminal Slave,表示通过pty打开的终端设备。也就是说,每当我们在用户态启动一个新的终端程序时,系统内核就会为其分配一个pty容器,并自动创建一个从属于该pty的pts终端设备。- 在
Linux系统中,我们使用的终端程序实际上就是管理pts终端设备的,比如GNOME Terminal、Konsole等。
综上所述:
tty:物理终端设备或虚拟终端设备,可直接输出文字和命令操作;pty:虚拟伪终端设备,提供双向通讯接口,用于终端程序和Shell的连接;pts:通过pty打开的终端设备,类似tty,但不存在实体终端,只能在终端程序中使用。