Linux TTY 与伪终端 PTY
TTY 是什么 tty 一词源自 teletype(电传打字机):通过串行线,键盘输入和打印机输出来回传递信息的设备,现在这个词泛指所有类型的终端设备。终端是一种字符型设备。 在支持多任务的计算机出现之前,两台 teletype 直接用物理线路相连: +----------+ Physical Line +----------+ | teletype |<--------------------->| teletype | +----------+ +----------+ 计算机支持多任务之后,人们把这些 teletype 接到计算机上当终端用(一是当时已有大量现成的 teletype 设备,二是相关网络已经比较成熟),连接方式变成: +----------+ +----------+ +-------+ Physical Line +-------+ +------+ | | | Terminal |<->| Modem |<--------------------->| Modem |<->| UART |<->| Computer | +----------+ +-------+ +-------+ +------+ | | +----------+ 左边的 Terminal 就是各种 teletype;物理线路两端接的 Modem 就是我们常说的"猫";UART 负责把 teletype 的信号转换成计算机能识别的信号。 /dev 下的几类终端设备文件 类型 设备文件 说明 串行端口终端 /dev/ttySn(如 /dev/ttyS0) 通过计算机串口连接的终端,对应 DOS 下的 COM1、COM2 等;echo test > /dev/ttyS1 可以把 test 发送到接在该端口上的设备 伪终端 /dev/pty/(成对出现,如 ptyp3/ttyp3) 一对逻辑终端设备,不直接对应物理硬件;一端读写会反映到另一端,类似管道;ttyp3 供普通程序当串口用,ptyp3 需要专门设计的程序(如 telnet、getty)使用 控制终端 /dev/tty 当前进程的控制终端;ps -ax 可查看进程关联的控制终端,tty 命令可查看具体对应哪个实际设备 控制台终端 /dev/ttyn、/dev/console UNIX 里显示器通常称为控制台;tty1-tty6 是虚拟终端,Alt+F1~F6 切换,tty0 是当前虚拟终端的别名,系统信息统一发到这里 其它 例如 /dev/ttyIn 针对 ISDN 等具体设备的终端特殊文件 pty:伪终端 如果是远程 telnet 到主机,或者用 xterm,并没有物理终端,这时候就要靠伪终端 pty(pseudo-tty)。 ...