Список USB устройств Qt
Как получить список подключенных usb накопителей sd[b-z][0-9] средствами Qt C++. Задача выполняется для поиска устройств и дальнейшего их монтирования.
ПРАВКА
В программе требуется избавиться от применения DBus, так же в системе отключается служба lightdm и udisks отваливается вместе с ним
Ответы (2 шт):
Вопрос решен, все устройства входят в параметр 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()) {}
Для современных линуксов воспользуйтесь dbus интерфейсом udisks. Если программа будет распространяться в falatpack или snap, то другого способа я не вижу.
Следующий уровень смотри папку /sys/class/block и выполни команду udevadm info /sys/class/block/sdb1
Там увидишь всю информацию о диске
Посмотрите пример на си. https://github.com/robertalks/udev-examples/blob/master/udev_example2.c тут перечисление блочных девайсов и немного информации по ним.