Russian Qt Forum
Мая 15, 2025, 19:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как используя Qt узнать какие существуют диски и их разделы в linux?  (Прочитано 18429 раз)
Андрей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   Вверх
  Печать  
 
Перейти в:  


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