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
,但不存在实体终端,只能在终端程序中使用。