Russian Qt Forum
Ноябрь 23, 2024, 07:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как используя Qt узнать какие существуют диски и их разделы в linux?  (Прочитано 18003 раз)
Андрей80
Гость
« : Август 03, 2010, 15:47 »

Здравствуйте.
Используя Qt::drives() получаю список дисков в системе linux ubuntu.
Как и обещали разработчики библиотеки (QDir::Drives   0x004   List disk drives (ignored under Unix)),  особенно много получить не удалось. Но наверняка решить проблему возможно, подскажите пожалуйста, кто сталкивался.
Как можно получить список разделов своего жесткого диска?
Записан
crossly
Гость
« Ответ #1 : Август 03, 2010, 15:51 »

/proc/partitions
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Август 03, 2010, 15:51 »

Запускать и парсить вывод утилит типа cfdisk, fdisk и т.п. или еще как нибудь. Парсить устройства в /dev например... Вариантов уйма.
---

Упс.. опередили

Вот еще ссылка: http://xmelegance.org/kparted/index.html - там используется библиотека libparted
« Последнее редактирование: Август 03, 2010, 15:54 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
crossly
Гость
« Ответ #3 : Август 03, 2010, 16:15 »

для использования cfdisk, fdisk нужны права root....
Записан
Silentium
Гость
« Ответ #4 : Август 01, 2012, 20:21 »

для использования cfdisk, fdisk нужны права root....
Да нет на fdisk -l обычных прав должно хватить с избытком
ну а дальше тупо пишем скрипт
fdisk -l| awk '/Disk||Диск/ {print($1 " " $2 " "$3)}'
Записан
andrew.k
Гость
« Ответ #5 : Август 01, 2012, 23:13 »

для использования cfdisk, fdisk нужны права root....
Да нет на fdisk -l обычных прав должно хватить с избытком
ну а дальше тупо пишем скрипт
fdisk -l| awk '/Disk||Диск/ {print($1 " " $2 " "$3)}'
у меня fdisk -l требует права рута. Значит везде по-разному.
а вот на чтение /proc/partitions прав точно должно хватить.
а преимуществ вызова fdisk нет, скорее наоборот медленнее будет.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Август 01, 2012, 23:53 »

у меня fdisk -l требует права рута. Значит везде по-разному.

круто, это где так?
Записан
Fat-Zer
Гость
« Ответ #7 : Август 02, 2012, 01:30 »

для fdisk -l нужны права на чтение /dev/sd? . обычно для этого пользователю нужно быть в группе disk или block. и если он лежит в /sbin, то само собой надо полный путь указать...

ещё есть Ъ способ: запросить всю эту информацию у udev'а (то есть udisks) через dbus. см. доки по оному...
если надо, у меня где-то был на c/glib пример с получением списка дисков...
« Последнее редактирование: Август 02, 2012, 01:35 от Fat-Zer » Записан
DmitryM
Гость
« Ответ #8 : Август 02, 2012, 07:37 »

а как насчет чтение /etc/mtab ?
Человеку ведь нужен список точек монтирования устройств.
Записан
Silentium
Гость
« Ответ #9 : Август 02, 2012, 08:21 »

а как насчет чтение /etc/mtab ?
Человеку ведь нужен список точек монтирования устройств.
Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будет
Записан
Silentium
Гость
« Ответ #10 : Август 02, 2012, 08:28 »

для использования cfdisk, fdisk нужны права root....
Да нет на fdisk -l обычных прав должно хватить с избытком
ну а дальше тупо пишем скрипт
fdisk -l| awk '/Disk||Диск/ {print($1 " " $2 " "$3)}'
у меня fdisk -l требует права рута. Значит везде по-разному.
а вот на чтение /proc/partitions прав точно должно хватить.
а преимуществ вызова fdisk нет, скорее наоборот медленнее будет.

Да ваш метод удобен, единственное, ручками размер в человеческий вид придется переделывать
Записан
DmitryM
Гость
« Ответ #11 : Август 02, 2012, 09:30 »

а как насчет чтение /etc/mtab ?
Человеку ведь нужен список точек монтирования устройств.
Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будет
Это правильный вариант, т. к. QDir::drives ()
Цитировать
On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc
Если устройство подключено, то его всегда можно найти в /dev
Записан
Silentium
Гость
« Ответ #12 : Август 02, 2012, 10:07 »

а как насчет чтение /etc/mtab ?
Человеку ведь нужен список точек монтирования устройств.
Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будет
Это правильный вариант, т. к. QDir::drives ()
Цитировать
On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc
Если устройство подключено, то его всегда можно найти в /dev
Абсолютная ваша правда, если программа предполагает, что все уже смонтированно. Иначе мы возвращаемся к /proc/partition fdisk, ну или парсить директорию /dev. Но как ее парсить если сборщик определил имена дисков не как стандартные sd??, а по другому ?
Записан
andrew.k
Гость
« Ответ #13 : Август 02, 2012, 10:09 »

а как насчет чтение /etc/mtab ?
Человеку ведь нужен список точек монтирования устройств.
Не вариант, в mtab уже об смонтированных. А если программа предполагает монтирования, там для нее данных не будет
Это правильный вариант, т. к. QDir::drives ()
Цитировать
On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc
Если устройство подключено, то его всегда можно найти в /dev
Абсолютная ваша правда, если программа предполагает, что все уже смонтированно. Иначе мы возвращаемся к /proc/partition fdisk, ну или парсить директорию /dev. Но как ее парсить если сборщик определил имена дисков не как стандартные sd??, а по другому ?
В директории /dev могут быть все возможные устройства, а не только подключенные на данный момент.
Записан
DmitryM
Гость
« Ответ #14 : Август 02, 2012, 11:19 »

Абсолютная ваша правда, если программа предполагает, что все уже смонтированно. Иначе мы возвращаемся к /proc/partition fdisk, ну или парсить директорию /dev. Но как ее парсить если сборщик определил имена дисков не как стандартные sd??, а по другому ?
Ты много видел систем, где именуется не по стандарту? Да и /proc/partition fdisk не покажет usb, cdrom, floppy.

Цитировать
В директории /dev могут быть все возможные устройства, а не только подключенные на данный момент.
Через тот же udev можно удалить устройство из /dev.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.139 секунд. Запросов: 23.