【问题标题】:Get device filesystem path from dev_t on macOS在 macOS 上从 dev_t 获取设备文件系统路径
【发布时间】:2019-02-20 16:17:11
【问题描述】:

如果我在 macOS (Darwin) 上有一个 32 位整数 BSD 设备号 dev_t(例如 0x1000004),我如何才能获得此设备的相应文件系统路径(例如“/dev/disk1s4”)?

【问题讨论】:

  • /dev/diskxxx 只是一个指向特殊 inode 的目录条目。 mknod /tmp/mydisk b 4096 4(或类似的)可能会为您创建(另一个)。
  • 因此,如果您想查找现有条目,则必须列出目录并查找它。 (请注意,它可能根本不存在。)您可以通过调用ls -l 命令或调用opendir/readdir 然后stat 来列出目录,无论哪种方式更方便。

标签: c macos darwin


【解决方案1】:

您必须枚举已挂载的文件系统并查找设备 ID 匹配的文件系统。您可以使用getfsstat() 进行枚举。这填充了struct statfs 结构。将每个结构的 f_fsid.val[0] 字段与您要查找的 dev_t 进行比较。如果它们匹配,那么 struct statfs 就是您要查找的设备的那个,您可以检查它的其他字段以获取您要查找的信息。特别是,f_mntfromname 是设备路径。

【讨论】:

    【解决方案2】:
    find /dev -type b -ls
    

    ,并检查主要/次要的输出 == {0x1000,4}


    或者:find / -type b -ls 如果需要搜索整个文件系统。

    顺便说一句:可能有更多条目,指的是相同的 {major,minor} 组合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-08
      • 2011-10-02
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多