> Linux教程 > linux基础 >

Linux终端设备详解

终端是一种字符型设备它有多种类型通常使用tty来简称各种类型的终端设备tty是Teletype的缩写Teletype是最早出现的一种终端设备很象电传打字机(或者说就是?)是由Teletype公司生产的在Linux系统的设备特殊文件目录/dev/下终端特殊设备文件一般有以下几种

  串行端口终端(/dev/ttySn)

  串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备计算机把每个串行端口都看作是一个字符设备有段时间这些串行端口设备通常被称为终端设备因为那时它的最大用途就是用来连接终端这些串行端口所对应的设备名称是/dev/tts/(或/dev/ttyS/dev/tts/(或/dev /ttyS)等设备号分别是()等分别对应于DOS系统下的COMCOM若要向一个端口发送数据可以在命令行上把标准输出重定向到这些特殊文件名上即可例如在命令行提示符下键入echo test >; /dev/ttyS会把单词test发送到连接在ttyS(COM)端口的设备上

  伪终端(/dev/pty/)
伪终端(Pseudo Terminal)是成对的逻辑终端设备例如/dev/ptyp和/dev/ttyp(或着在设备文件系统中分别是/dev/pty/m和 /dev/pty/s它们与实际物理设备并不直接相关如果一个程序把ttyp看作是一个串行端口设备则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp而ttyp则是另一个程序用于读写操作的逻辑设备这样两个程序就可以通过这种逻辑设备进行互相交流而其中一个使用ttyp的程序则认为自己正在与一个串行端口进行通信这很象是逻辑设备对之间的管道操作
对于ttyp(s任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备但对于使用ptyp的程序则需要专门设计来使用ptyp(m)逻辑设备
例如如果某人在网上使用telnet程序连接到你的计算机上则telnet程序就可能会开始连接到设备ptyp(m)上(一个伪终端端口上)此时一个getty程序就应该运行在对应的ttyp(s)端口上当telnet从远端获取了一个字符时该字符就会通过ms传递给getty程序而getty程序就会通过sm和telnet程序往网络上返回login:字符串信息这样登录程序与telnet程序就通过伪终端 进行通信通过使用适当的软件就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上
在使用设备文件系统(device filesystem)之前为了得到大量的伪终端设备特殊文件使用了比较复杂的文件名命名方式因为只存在个ttyp(ttyp—ttypf)的设备文件为了得到更多的逻辑设备对就使用了象qrs等字符来代替p例如ttys和ptys就是一个伪终端设备对不过这种命名方式目前仍然在RedHat等Linux系统中使用着

  但Linux系统上的Unix并不使用上述方法而使用了pty master方式例如/dev/ptm它的对应端则会被自动地创建成/dev/pts/这样就可以在需要时提供一个pty伪终端目录 /dev/pts是一个类型为devpts的文件系统并且可以在被加载文件系统列表中看到虽然文件/dev/pts/看上去是设备文件系统中的一项但其实它完全是一种不同的文件系统

  控制终端(/dev/tty)

  如果当前进程有控制终端(Controlling Terminal)的话那么/dev/tty就是当前进程的控制终端的设备特殊文件可以使用命令ps –ax来查看进程与哪个控制终端相连对于你登录的shell/dev/tty就是你使用的终端设备号是(使用命令tty可以查看它具体对应哪个实际终端设备/dev/tty有些类似于到实际所使用终端设备的一个联接

  控制台终端(/dev/ttyn /dev/console)
在Linux系统中计算机显示器通常被称为控制台终端(Console)它仿真了类型为Linux的一种终端(TERM=Linux)并且有一些设备特殊文件与之相关联ttyttytty当你在控制台上登录时使用的是tty使用Alt+[F—F]组合键时我们就可以切换到ttytty等上面去tty –tty等称为虚拟终端而tty则是当前所使用虚拟终端的一个别名系统所产生的信息会发送到该终端上因此不管当前正在使用哪个虚拟终端系统信息都会发送到控制台终端上

  你可以登录到不同的虚拟终端上去因而可以让系统同时有几个不同的会话期存在只有系统或超级用户root可以向/dev/tty进行写操作

  其它类型
Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件例如针对ISDN设备的/dev/ttyIn终端设备等这里不再赘述。

(责任编辑:IT)