我需要列出使用 C++ 连接到 Linux 机器的硬盘驱动器。
是否有任何可用的 C 或 C++ 函数来执行此操作?
看看我制作的这个简单的 /proc/mounts 解析器。
#include <fstream>
#include <iostream>
struct Mount {
std::string device;
std::string destination;
std::string fstype;
std::string options;
int dump;
int pass;
};
std::ostream& operator<<(std::ostream& stream, const Mount& mount) {
return stream << mount.fstype <<" device \""<<mount.device<<"\", mounted on \""<<mount.destination<<"\". Options: "<<mount.options<<". Dump:"<<mount.dump<<" Pass:"<<mount.pass;
}
int main() {
std::ifstream mountInfo("/proc/mounts");
while( !mountInfo.eof() ) {
Mount each;
mountInfo >> each.device >> each.destination >> each.fstype >> each.options >> each.dump >> each.pass;
if( each.device != "" )
std::cout << each << std::endl;
}
return 0;
}
它不是一个函数,但您可以从 /proc/partitions 读取活动内核分区或从 /sys/block 的 dir 列表中列出所有块设备
没有。没有标准的 C 或 C++ 函数可以做到这一点。您将需要一个 API。但是你可以使用:
system("fdisk -l");