马修(Neil Matthew)
|
Linux程序设计(第4版) (图灵程序设计丛书 95) (Chinese Edition)
by
—
published
2010
|
|
* Note: these are all the books on Goodreads for this author. To add more, click here.
“图 3-1 3.1.2 文件和设备 甚至硬件设备在Linux中通常也被表示(映射)为文件。例如,作为超级用户,你可以使用如下命令将IDE CD-ROM驱动器挂载为一个文件: 这个命令将CD-ROM设备(在本例中,是在系统启动时被装载为/dev/hdc的第二个主IDE设备,其他类型的设备对应不同的/dev条目)中的当前内容挂载为/mnt/cdrom目录下的文件结构。然后,你就可以像往常一样浏览CD-ROM的目录,只不过该目录中的内容是只读的。 UNIX和Linux中比较重要的设备文件有3个:/dev/console、/dev/tty和/dev/null。 1./dev/console 这个设备代表的是系统控制台。错误信息和诊断信息通常会被发送到这个设备。每个UNIX系统都会有一个指定的终端或显示屏用来接收控制台消息。过去,它可能是一台专用的打印终端。在现代的工作站和Linux上,它通常是“活跃”的虚拟控制台;而在X视窗系统中,它会是屏幕上一个特殊的控制台窗口。 2./dev/tty 如果一个进程有控制终端的话,那么特殊文件/dev/tty就是这个控制终端(键盘和显示屏,或键盘和窗口)的别名(逻辑设备)。例如,由系统自动运行的进程和脚本就没有控制终端,所以它们不能打开/dev/tty。 在能够使用该设备文件的情况下,/dev/tty允许程序直接向用户输出信息,而不管用户具体使用的是哪种类型的伪终端或硬件终端。在标准输出被重定向时,这一功能非常有用。使用命令ls -R | more显示一个长目录列表就是一个这样的例子,more程序需要提示用户进行键盘操作之后才能显示下一页内容。你将在第5章中看到更多使用/dev/tty的例子。 注意,虽然/dev/console设备只有一个,但通过/dev/tty却能够访问许多不同的物理设备。 3./dev/null /dev/null文件是空(null)设备。所有写向这个设备的输出都将被丢弃,而读这个设备会立刻返回一个文件尾标志,所以在cp命令里可以把它用做复制空文件的源文件。人们常把不需要的输出重定向到/dev/null。 创建空文件的另一个方法是使用touch 命令,该命令的作用是改变文件的修改时间。如果指定的文件不存在,就创建它,但该命令并不会把有内容的文件变成空文件。 /dev目录中的其他设备包括:硬盘和软盘、通信端口、磁带驱动器、CD-ROM、声卡以及一些代表系统内部工作状态的设备。该目录中甚至还有/dev/zero设备,它可以作为创建空文件的null字节源。访问该目录中的某些设备需要具有超级用户权限,普通用户不能通过编写程序来直接访问如硬盘这样的底层设备。设备文件的名字会随系统的不同而不同。Linux发行版通常都提供了以超级用户身份运行的应用程序,用来管理那些以其他用户身份无法访问的设备,例如,用于挂载文件系统的mount命令。 设备被分为字符设备和块设备。两者区别在于访问设备时是否需要一次读写一整块。一般情况下,块设备是那些支持某些类型文件系统的设备,例如硬盘。 在本章中,我们将集中讨论磁盘文件和目录。我们将在第5章中讨论另一种设备——用户终端。 3.2 系统调用和设备驱动程序 你只需用很少量的函数就可以对文件和设备进行访问和控制。这些函数被称为系统调用,由UNIX(和Linux)直接提供,它们也是通向操作系统本身的接口。 操作系统的核心部分,即内核,是一组设备驱动程序。它们是一组对系统硬件进行控制的底层接口。例如,磁带”
― Linux程序设计(第4版) (图灵程序设计丛书 95)
― Linux程序设计(第4版) (图灵程序设计丛书 95)
Is this you? Let us know. If not, help out and invite 马修(Neil to Goodreads.
