一、 tty(teletypes)
tty设备包括虚拟控制台,串口以及伪终端设备。tty的种类有很多:
1.1 tty
其中,tty是当前进程的控制终端的设备特殊文件。可以通过如下方式验证:
[email protected]:/dev$ echo hello >/dev/tty
hello
当我们将输出重定向到/dev/tty文件时,结果总会输出到当前终端上。
1.2 ttyn
tty0~tty63是虚拟终端的设备特殊文件。/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。(待深入补充)
1.3 ttySn
ttyS代表tty serial,/dev/ttyS*是串行终端设备。这些设备文件会映射到物理串行端口,如果我们执行下列命令:
echo 2 > /dev/ttyS2
那么在对应的物理端口,如COM2上可以检测到输出。
二、 pty(pseudo-tty)
pty全称pseudo-tty,即伪终端设备,用于远程连接。它由master和slave两端构成,在任何一端的输入都会传达到另一端。与tty不同,系统中并不存在pty这种文件,它是由pts(pseudo-terminal slave)和ptmx(pseudo-teiminal master)两种设备文件来实现的。
三、 pts(pseudo-terminal slave)
pts(pseudo-terminal slave)即伪终端的slave端。在Linux的/dev/pts/文件夹下有对应设设备文件。
我们可以通过tty命令查看当前用户的登录终端,如下图所示:
[email protected]:/dev$ tty
/dev/pts/1
当我们设备文件/dev/pts/1进行输出时,屏幕上会显示相应输出:
[email protected]:/dev$ echo hello >/dev/pts/1
hello
倘若访问别的slave文件,如/dev/pts/2,则会返回权限不足错误:
[email protected]:/dev$ echo hello >/dev/pts/2
-bash: /dev/pts/2: Permission denied
四、 ptmx(pseudo-terminal master)
ptmx是伪终端的master端。在/dev下仅有2个ptmx文件,其信息如下:
[email protected]:/dev$ ll /dev/ptmx
crw-rw-rw- 1 root tty 5, 2 Jan 16 16:38 /dev/ptmx
[email protected]:/dev$ ll /dev/pts/ptmx
c--------- 1 root root 5, 2 Mar 17 2018 /dev/pts/ptmx
从中可以看出任何用户都可对/dev/ptmx进行读写,而任何用户对/dev/pts/ptmx都没有读写权限。(这两个文件更加具体的作用暂不清楚,留待后续深入)