Как перечислить жесткие диски, подключенные к машине Linux с использованием C ++? - PullRequest
4 голосов
/ 30 августа 2011

Мне нужно перечислить жесткие диски, подключенные к машине Linux с помощью C ++.

Есть ли какая-либо функция C или C ++ для этого?

Ответы [ 4 ]

6 голосов
/ 30 августа 2011

Взгляните на этот простой парсер / 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;
}
6 голосов
/ 30 августа 2011

Вы можете использовать libparted

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

ped_device_probe_all () - это вызов для обнаружения устройств.

5 голосов
/ 30 августа 2011

Это не функция, но вы можете прочитать активные разделы ядра из / proc / partitions или перечислить все блочные устройства из списка dir / sys / block

0 голосов
/ 30 августа 2011

Неа. Нет стандартной C или C ++ функции для этого Вам понадобится API. Но вы можете использовать:

system("fdisk -l");
...