我追求的是这种类型的含义以及什么接口可以使用它。
它在dev_t
用于设备 ID 的 Posix 规范中进行了解释。但是,对于由路径描述的任何对象(可以是文件、直接、fifo 或物理设备),设备 ID 意味着什么?
例如,调用stat()
应该给你一个包含这种类型成员的结构;您可以统计文件系统中的任何类型的对象。那么设备ID对于不同的文件类型应该有不同的含义。
dev_t
在绝大多数程序(可移植且未连接到单个操作系统的程序)中,唯一用途是确定两个文件名或文件描述符引用相同的底层文件。当且仅当两个文件结构的st_ino
和条目相互匹配时,这是正确的。st_dev
stat
基本上,st_dev
告诉文件驻留在哪个“设备”(例如安装的分区、网络共享等),并且st_ino
是单个设备上下文中文件的唯一标识符。
实际上,在 中有两个dev_t
类型的字段struct stat
:
st_dev
是“包含文件的设备的 [d] 设备 ID”,因此如果两个文件具有相同的st_dev
,则它们位于同一文件系统上。st_rdev
是由字符或块特殊文件表示的设备的设备ID,即在/dev
. 它对其他类型的文件没有意义。在内核中,定义的 dev_t 类型用于保存设备号(主要/次要)。dev_t 是一个 32 位的数量,其中 12 位用于主编号,20 位用于次编号。