在 macOS 上从 dev_t 获取设备文件系统路径
Get device filesystem path from dev_t on macOS
如果我在 macOS (Darwin) 上有一个 32 位整数 BSD 设备编号 dev_t(例如 0x1000004),我如何才能获得该设备对应的文件系统路径(例如“/dev/disk1s4 ")?
您必须枚举已安装的文件系统并查找设备 ID 匹配的文件系统。您可以使用 getfsstat()
进行枚举。填充 struct statfs
结构。将每个结构的字段 f_fsid.val[0]
与您要查找的 dev_t
进行比较。如果它们匹配,那么 struct statfs
就是您正在寻找的设备的那个,您可以检查它的其他字段以获取您正在寻找的信息。特别是,f_mntfromname
是设备路径。
find /dev -type b -ls
,并检查 major/minor == {0x1000,4}
的输出
或者:find / -type b -ls
如果需要搜索整个文件系统。
顺便说一句:可能会有更多条目,指的是相同的 {major,minor} 组合。
如果我在 macOS (Darwin) 上有一个 32 位整数 BSD 设备编号 dev_t(例如 0x1000004),我如何才能获得该设备对应的文件系统路径(例如“/dev/disk1s4 ")?
您必须枚举已安装的文件系统并查找设备 ID 匹配的文件系统。您可以使用 getfsstat()
进行枚举。填充 struct statfs
结构。将每个结构的字段 f_fsid.val[0]
与您要查找的 dev_t
进行比较。如果它们匹配,那么 struct statfs
就是您正在寻找的设备的那个,您可以检查它的其他字段以获取您正在寻找的信息。特别是,f_mntfromname
是设备路径。
find /dev -type b -ls
,并检查 major/minor == {0x1000,4}
的输出或者:find / -type b -ls
如果需要搜索整个文件系统。
顺便说一句:可能会有更多条目,指的是相同的 {major,minor} 组合。