Список USB устройств Qt

Как получить список подключенных usb накопителей sd[b-z][0-9] средствами Qt C++. Задача выполняется для поиска устройств и дальнейшего их монтирования.

ПРАВКА

В программе требуется избавиться от применения DBus, так же в системе отключается служба lightdm и udisks отваливается вместе с ним


Ответы (2 шт):

Автор решения: richstog

Вопрос решен, все устройства входят в параметр QDir::System, по этому пишем так:

QDir directory("/dev");
QFileInfoList entries = directory.entryInfoList(QDir::System | QDir::NoDotAndDotDot);

Далее используем регулярное выражение и выборку подходящих элементов:

QRegularExpression re("sd[b-z][0-9]+$");
for (const QFileInfo &entry : entries)
        if (re.match(entry.fileName()).hasMatch()) {}

→ Ссылка
Автор решения: eri

Для современных линуксов воспользуйтесь dbus интерфейсом udisks. Если программа будет распространяться в falatpack или snap, то другого способа я не вижу.

Следующий уровень смотри папку /sys/class/block и выполни команду udevadm info /sys/class/block/sdb1

Там увидишь всю информацию о диске

Посмотрите пример на си. https://github.com/robertalks/udev-examples/blob/master/udev_example2.c тут перечисление блочных девайсов и немного информации по ним.

→ Ссылка