我需要使用文件系统超级块从 C/C++ 程序中检测文件系统类型。但是,我认为 ext2 和 ext4 的超级块之间没有太大区别。该s_rev_level场是相同的(= 1),则s_minor_rev_level是相同的(= 0)。
我可以从s_feature_compat(和其他功能字段)检查一些功能并尝试找到 ext2 不支持的功能。但是 - 格式化分区的人可能会故意禁用某些功能。因此,该方法可以检测到 ext4,但无法区分 ext2 和禁用了 ext4 特定功能的 ext4。
那么,该怎么做呢?
我知道,/dev/sde块设备不再存在(因为我已经停止了一个模拟它的软件),但我仍然在输出lsblk和目录中看到它/dev。
当我尝试该命令时,我在(如下)fdisk -l /dev/sde中看到很多错误:syslog
Sep 26 16:25:41 ubuntu3 kernel: [29651.631827] sd 49:0:0:1: [sde] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Sep 26 16:25:41 ubuntu3 kernel: [29651.631835] sd 49:0:0:1: [sde] Sense Key : Illegal Request [current]
Sep 26 16:25:41 ubuntu3 kernel: [29651.631838] sd 49:0:0:1: [sde] Add. Sense: Logical unit not supported
Sep 26 16:25:41 ubuntu3 kernel: [29651.631839] sd 49:0:0:1: [sde] CDB:
Sep 26 16:25:41 ubuntu3 kernel: [29651.631840] Read(10): 28 00 00 00 00 00 00 …Run Code Online (Sandbox Code Playgroud)