我想确定文件是位于 HDD 还是 SDD 上。
我发现我可以使用 /sys/block
信息检查驱动器类型:
prompt$ cat /sys/block/sdc/queue/rotational
1
如果它是旋转的或未知,则它具有1
。当磁盘是SSD时,它是0
。
现在我有一个文件,并且知道它是在 HDD 还是 SDD 上。我可以stat()
文件来获取设备编号:
struct stat s;
stat(filename, &s);
// what do I do with s.st_dev now?
我想将 s.st_dev
转换为 C 语言 /sys/block
目录中的驱动器名称。
我必须使用哪些函数才能获取该信息?或者它在某些 /proc
文件中可用?
最佳答案
首先对于输入文件,我们需要记录该文件存在于哪个分区上 您可以使用以下命令来实现
df -P <file name> | tail -1 | cut -d ' ' -f 1
这会给你类似这样的输出:/dev/sda3
现在您可以应用以下命令来确定 HDD 、 SDD
cat /sys/block/sdc/queue/rotational
您可以在程序中使用popen来获取这些系统命令的输出
关于c++ - 如何将 s.st_dev 转换为/sys/block/<name>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57642729/