4.23特殊设备文件s t _ d e v和s t _ r d e v这两个字段经常引起混淆,当在11.9节讨论t t y n a m e函数时,需要使用这两个字段。有关规则很简单:
-
每个文件系统都由其主、次设备号而为人所知。设备号所用的数据类型是基本系统数据类型d e v _ t。回忆图4-1,一个磁盘经常包含若干个文件系统。
-
我们通常可以使用两个大多数实现都定义的宏:m a j o r和m i n o r来存取主、次设备号。这就意味着我们无需关心这两个数是如何存放在d e v _ t对象中的。早期的系统用16位整型存放设备号:8位用于主设备号,8位用于次设备号。S V R 4使用32位:14位用于主设备号,18位用于次设备号。4.3 + B S D则使用16位:8位用于主设备号,8位用于次设备号。P O S I X . 1说明d e v _ t类型是存在的,但没有定义它包含什么,或如何取得其内容。大多数实现定义了宏m a j o r和m i n o r,但在哪一个头文件中定义它们则与实现有关。
-
系统中每个文件名的s t _ d e v值是文件系统的设备号,该文件系统包含了该文件名和其对应的i节点。
-
只有字符特殊文件和块特殊文件才有s t _ r d e v值。此值包含该实际设备的设备号。
实例程序4-10为每个命令行参数打印设备号,另外,若此参数引用的是字符特殊文件或块特殊文件,则也打印该特殊文件的s t _ r d e v值。程序4-10打印s t _ d e v和s t _ r d e v值。
相关链接:
暂无评论