Название: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Андрей80 от Август 03, 2010, 15:47 Здравствуйте.
Используя Qt::drives() получаю список дисков в системе linux ubuntu. Как и обещали разработчики библиотеки (QDir::Drives 0x004 List disk drives (ignored under Unix)), особенно много получить не удалось. Но наверняка решить проблему возможно, подскажите пожалуйста, кто сталкивался. Как можно получить список разделов своего жесткого диска? Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: crossly от Август 03, 2010, 15:51 /proc/partitions
Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: kuzulis от Август 03, 2010, 15:51 Запускать и парсить вывод утилит типа cfdisk, fdisk и т.п. или еще как нибудь. Парсить устройства в /dev например... Вариантов уйма.
--- Упс.. опередили Вот еще ссылка: http://xmelegance.org/kparted/index.html - там используется библиотека libparted Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: crossly от Август 03, 2010, 16:15 для использования cfdisk, fdisk нужны права root....
Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 01, 2012, 20:21 для использования cfdisk, fdisk нужны права root.... Да нет на fdisk -l обычных прав должно хватить с избыткомну а дальше тупо пишем скрипт fdisk -l| awk '/Disk||Диск/ {print($1 " " $2 " "$3)}' Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: andrew.k от Август 01, 2012, 23:13 для использования cfdisk, fdisk нужны права root.... Да нет на fdisk -l обычных прав должно хватить с избыткомну а дальше тупо пишем скрипт fdisk -l| awk '/Disk||Диск/ {print($1 " " $2 " "$3)}' а вот на чтение /proc/partitions прав точно должно хватить. а преимуществ вызова fdisk нет, скорее наоборот медленнее будет. Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Alex Custov от Август 01, 2012, 23:53 у меня fdisk -l требует права рута. Значит везде по-разному. круто, это где так? Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Fat-Zer от Август 02, 2012, 01:30 для fdisk -l нужны права на чтение /dev/sd? . обычно для этого пользователю нужно быть в группе disk или block. и если он лежит в /sbin, то само собой надо полный путь указать...
ещё есть Ъ способ: запросить всю эту информацию у udev'а (то есть udisks) через dbus. см. доки по оному... если надо, у меня где-то был на c/glib пример с получением списка дисков... Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: DmitryM от Август 02, 2012, 07:37 а как насчет чтение /etc/mtab ?
Человеку ведь нужен список точек монтирования устройств. Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 02, 2012, 08:21 а как насчет чтение /etc/mtab ? Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будетЧеловеку ведь нужен список точек монтирования устройств. Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 02, 2012, 08:28 для использования cfdisk, fdisk нужны права root.... Да нет на fdisk -l обычных прав должно хватить с избыткомну а дальше тупо пишем скрипт fdisk -l| awk '/Disk||Диск/ {print($1 " " $2 " "$3)}' а вот на чтение /proc/partitions прав точно должно хватить. а преимуществ вызова fdisk нет, скорее наоборот медленнее будет. Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: DmitryM от Август 02, 2012, 09:30 а как насчет чтение /etc/mtab ? Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будетЧеловеку ведь нужен список точек монтирования устройств. Цитировать On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc Если устройство подключено, то его всегда можно найти в /devНазвание: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 02, 2012, 10:07 а как насчет чтение /etc/mtab ? Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будетЧеловеку ведь нужен список точек монтирования устройств. Цитировать On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc Если устройство подключено, то его всегда можно найти в /devНазвание: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: andrew.k от Август 02, 2012, 10:09 а как насчет чтение /etc/mtab ? Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будетЧеловеку ведь нужен список точек монтирования устройств. Цитировать On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc Если устройство подключено, то его всегда можно найти в /devНазвание: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: DmitryM от Август 02, 2012, 11:19 Абсолютная ваша правда, если программа предполагает, что все уже смонтированно. Иначе мы возвращаемся к /proc/partition fdisk, ну или парсить директорию /dev. Но как ее парсить если сборщик определил имена дисков не как стандартные sd??, а по другому ? Ты много видел систем, где именуется не по стандарту? Да и /proc/partition fdisk не покажет usb, cdrom, floppy.Цитировать В директории /dev могут быть все возможные устройства, а не только подключенные на данный момент. Через тот же udev можно удалить устройство из /dev. Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 02, 2012, 11:47 Абсолютная ваша правда, если программа предполагает, что все уже смонтированно. Иначе мы возвращаемся к /proc/partition fdisk, ну или парсить директорию /dev. Но как ее парсить если сборщик определил имена дисков не как стандартные sd??, а по другому ? Ты много видел систем, где именуется не по стандарту? Да и /proc/partition fdisk не покажет usb, cdrom, floppy.Цитировать В директории /dev могут быть все возможные устройства, а не только подключенные на данный момент. Через тот же udev можно удалить устройство из /dev. Код: Вывод с моего /proc/partitions Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: andrew.k от Август 02, 2012, 13:54 Абсолютная ваша правда, если программа предполагает, что все уже смонтированно. Иначе мы возвращаемся к /proc/partition fdisk, ну или парсить директорию /dev. Но как ее парсить если сборщик определил имена дисков не как стандартные sd??, а по другому ? Ты много видел систем, где именуется не по стандарту? Да и /proc/partition fdisk не покажет usb, cdrom, floppy.cdrom, floppy это отдельная песня. Цитировать В директории /dev могут быть все возможные устройства, а не только подключенные на данный момент. Через тот же udev можно удалить устройство из /dev. Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: DmitryM от Август 02, 2012, 14:22 А если нет udev? А что вместо udev в Linux, devfs/hotplug?да и зачем удалять? Раз система насоздавала, значит она по-другому не умеет. Все она умеет. У меня Gnome удаляет устройство из /dev при размонтирования флешки.Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: andrew.k от Август 02, 2012, 14:48 А если нет udev? А что вместо udev в Linux, devfs/hotplug?да и зачем удалять? Раз система насоздавала, значит она по-другому не умеет. Все она умеет. У меня Gnome удаляет устройство из /dev при размонтирования флешки.Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: DmitryM от Август 02, 2012, 15:06 А у меня не умеет, у меня МСВС :) Ненавижу MCBC за ld-linux.so.1Когда сертифицируют ядро 2.6 появиться udev ;) Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: andrew.k от Август 02, 2012, 15:11 А у меня не умеет, у меня МСВС :) Ненавижу MCBC за ld-linux.so.1Когда сертифицируют ядро 2.6 появиться udev ;) Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 02, 2012, 17:06 у меня тут получилось что то в этом роде, единственное, я выбираю только не смонтированные устройства
Код: void QMount_Widget::get_devices(QStringList *devices_name){ Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: andrew.k от Август 02, 2012, 17:21 у меня тут получилось что то в этом роде, единственное, я выбираю только не смонтированные устройства Зачем ты используешь QTextStream, если то же самое можно сделать с помощью QFile?file.readAll() Название: Re: Как используя Qt узнать какие существуют диски и их разделы в linux? Отправлено: Silentium от Август 02, 2012, 20:47 у меня тут получилось что то в этом роде, единственное, я выбираю только не смонтированные устройства Зачем ты используешь QTextStream, если то же самое можно сделать с помощью QFile?file.readAll() |