我需要使用C++列出连接到Linux机器的硬盘驱动器。
是否有可用的C或C++函数可以完成此操作?
我需要使用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的目录列表中列出所有块设备。
没有标准的C或C++函数可以做到这一点。您需要一个API。 但是您可以使用:
system("fdisk -l");