5.1. 两种设备

UNIX,因此 Linux,识别两种不同类型的设备:随机访问块设备(例如磁盘)和字符设备(例如磁带和串行线),其中一些可能是串行的,而另一些可能是随机访问的。每个受支持的设备在文件系统中都表示为一个设备文件。当您读取或写入设备文件时,数据来自或去往它所代表的设备。这样,访问设备就不需要特殊的程序(也不需要特殊的应用程序编程方法,例如捕获中断或轮询串行端口);例如,要将文件发送到打印机,只需说

$ cat filename > /dev/lp1
$
文件的内容就会被打印出来(当然,文件必须是打印机可以理解的格式)。但是,由于让多个人同时将他们的文件 cat 到打印机不是一个好主意,所以通常使用一个特殊的程序来发送要打印的文件(通常是 lpr)。该程序确保一次只打印一个文件,并在完成上一个文件后立即自动将文件发送到打印机。大多数设备都需要类似的东西。事实上,人们很少需要担心设备文件。

由于设备在文件系统中显示为文件(在/dev目录中),很容易使用 ls 或其他合适的命令来查看存在哪些设备文件。在 ls -l 的输出中,第一列包含文件类型及其权限。例如,检查串行设备可能会给出

	$ ls -l /dev/ttyS0
		crw-rw-r--    1 root     dialout    4,  64 Aug 19 18:56 /dev/ttyS0
	
	$
	
第一列的第一个字符,即 `c' 在crw-rw-rw-上面,告诉知情用户文件的类型,在本例中是字符设备。对于普通文件,第一个字符是 `--d',对于目录,它是 `b';有关更多信息,请参阅 ls 手册页。

请注意,通常所有设备文件都存在,即使设备本身可能未安装。因此,仅仅因为您有一个文件/dev/sda,这并不意味着您真的有一个 SCSI 硬盘。拥有所有设备文件使安装程序更简单,并使添加新硬件更容易(无需找出正确的参数并为新设备创建设备文件)。