5

我需要列出使用 C++ 连接到 Linux 机器的硬盘驱动器。

是否有任何可用的 C 或 C++ 函数来执行此操作?

4

4 回答 4

8

看看我制作的这个简单的 /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;
}
于 2011-08-30T14:37:16.423 回答
6

您可以使用 libparted

http://www.gnu.org/software/parted/api/

ped_device_probe_all() 是检测设备的调用。

于 2011-08-30T13:38:25.150 回答
5

它不是一个函数,但您可以从 /proc/partitions 读取活动内核分区或从 /sys/block 的 dir 列表中列出所有块设备

于 2011-08-30T13:43:07.410 回答
0

没有。没有标准的 C 或 C++ 函数可以做到这一点。您将需要一个 API。但是你可以使用:

system("fdisk -l");
于 2011-08-30T13:39:28.520 回答