7 / 4 / 1
Регистрация: 03.05.2014
Сообщений: 82

Получить список жестких дисков

14.01.2018, 19:15. Показов 6553. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Прошу не кидаться в меня гнилыми овощами и нецензурной бранью, я только учусь 😁

Пишу программу, которая будет выполнять определенные действия с жестким диском (именно физическим устройством, а не монтированным, логическим диском), выбрав его из всех подключенных к машине по его серийному номеру. Информацию о том, как получить серийник нашел, а вот как получить список устройств нет... Возможно я что то назвал не своими словами, поправьте если что.

Вобщем надо получить список имен устройств, к примеру:
/dev/sda
/dev/sdb
/dev/sdc
и т.д.

Гугл/яндекс не помогли, нашел решения, но они какие уж слишком замудренные, мне кажется тут все проще.

Какие варианты пришли мне в голову:
1) Я знаю что система обзывает устройства так, как я привел в примере выше, т.е. можно по сути просто подставляя буквы по алфавиту к "/dev/sd", проверять существует ли файл устройства, пока не узнаю послежнюю букву устройства. На сколько это вариант работоспособен? Не может ли получиться так, что файл существует, но устройства как бы и нету? Или может ли так случиться, что есть устройство с буквой a и есть с буквой c, а с буквой b нету?
2) При помощи команды ls можно получить список всех файлов устройств, но получить результат выполнения команды не так легко, как запустить ее из программы.

Посоветуете что нибудь?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2018, 19:15
Ответы с готовыми решениями:

Список жестких дисков
Здраствуйте. Подскажите, как можно узнать сколько на компе жестких дисков(букв, типа C,D,E...), и записать ети буквы в КомбоБокс....

Список жёстких дисков с объёмами, одной строкой
Здравствуйте. Понимаю, что подобная тема уже была, я много гуглил, но у меня стоит немного другая задача, поэтому решил создать...

Получить информацию об оперативной памяти и информацию об одном из жёстких дисков
Как с помощью функций WinAPI определить информацию об оперативной памяти и информацию о памяти на одном из жёстких дисков. Заранее...

5
 Аватар для Старый воин
93 / 92 / 21
Регистрация: 16.08.2017
Сообщений: 188
Записей в блоге: 1
14.01.2018, 20:36
Лучший ответ Сообщение было отмечено Kapo как решение

Решение

Здравствуйте!
Вы с каким дистрибутивом работаете? Мне кажется, что там не буквами нумерация идет, а цифрами. sda1, sda2 ... и т.д. Да, проверил у себя (Rosa Linux), так и есть. А по поводу того, как эти номера распределяются, то современные системы их динамически присваивают. При загрузке все устройства определяются и для каждого файл создается. Кажется так. Если не так, то пусть меня поправят.
1
7 / 4 / 1
Регистрация: 03.05.2014
Сообщений: 82
14.01.2018, 20:55  [ТС]
Ubuntu 16.04

Забыл указать.

Если я правильно понимаю, то буквами идет нумерация самого диска, т.е. устройства (так сказать непосредственно железка), а цифрами нумеруются его логические разделы.

Т.е.:
/dev - каталог, в котором лежать файлы эти
sd - это система выберает по типу устройства, в зависимости от того, по которому оно подключено
буквы a-z - номер устройства
цифра - номер логического раздела

Добавлено через 8 минут
Тогда наверно мне подойдет мой первый вариант, надо только придумать как более "элегантно" перебирать файлы устройств. А то это sd меня пугает, боюсь что вдруг устройство начнет определяться по другому и уже будет не sd, а что то другое, хотя это наверно глупо.

Нашел вот такую вот штуку. Тот диск, который разбит на 6 разделов, это как раз мой жесткий диск и после символа "->" указан файл, который ему соответствует. Но это не в имени файла находится, а наверно прописано в самом файле... Открыть его ни чем не могу, автоматический поиск тоже результатов не дал. Как понять чем его открыть?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
neo@zion:~$ dir /dev/disk/by-id -g
итого 0
lrwxrwxrwx 1 root  9 янв 14 20:28 ata-TSSTcorp_CDDVDW_SN-208DB_R8XW6YOD600185 -> ../../sr0
lrwxrwxrwx 1 root  9 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW -> ../../sda
lrwxrwxrwx 1 root 10 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW-part1 -> ../../sda1
lrwxrwxrwx 1 root 10 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW-part2 -> ../../sda2
lrwxrwxrwx 1 root 10 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW-part3 -> ../../sda3
lrwxrwxrwx 1 root 10 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW-part4 -> ../../sda4
lrwxrwxrwx 1 root 10 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW-part5 -> ../../sda5
lrwxrwxrwx 1 root 10 янв 14 20:28 ata-WDC_WD5000LPCX-24C6HT0_WD-WXA1E945YLRW-part6 -> ../../sda6
lrwxrwxrwx 1 root  9 янв 14 20:28 wwn-0x50014ee6b05de515 -> ../../sda
lrwxrwxrwx 1 root 10 янв 14 20:28 wwn-0x50014ee6b05de515-part1 -> ../../sda1
lrwxrwxrwx 1 root 10 янв 14 20:28 wwn-0x50014ee6b05de515-part2 -> ../../sda2
lrwxrwxrwx 1 root 10 янв 14 20:28 wwn-0x50014ee6b05de515-part3 -> ../../sda3
lrwxrwxrwx 1 root 10 янв 14 20:28 wwn-0x50014ee6b05de515-part4 -> ../../sda4
lrwxrwxrwx 1 root 10 янв 14 20:28 wwn-0x50014ee6b05de515-part5 -> ../../sda5
lrwxrwxrwx 1 root 10 янв 14 20:28 wwn-0x50014ee6b05de515-part6 -> ../../sda6
0
 Аватар для Старый воин
93 / 92 / 21
Регистрация: 16.08.2017
Сообщений: 188
Записей в блоге: 1
14.01.2018, 22:21
Про буквы. Там от типа устройства зависит. Кажется для SATA это буква a, для блочных устройств b, для символьных c. А цифра - номер раздела. Открыть файл не получается наверное потому, что для этого доступ суперпользователя (root) нужен. Если с его привилегиями программа будет работать (вопреки инстинкту самосохранения), то наверное все получиться. Может не библиотечными средствами (std::ifstrem), но системные вызовы (open() например) должны работать.
Но кажется проще по Вашему второму варианту действовать (может дольше и с большим количеством телодвижений). Можно в программе использовать функцию system() и перенаправлять вывод результатов выполнения команды в файл. Затем вся информация из файла уже извлекается обычным способом (парсинг) и можно использовать ее для своих целей. Так, по моему не надо получать права root (это безопасность).
1
7 / 4 / 1
Регистрация: 03.05.2014
Сообщений: 82
16.01.2018, 21:19  [ТС]
Нашел решение более близкое к первому варианту:
PowerShell
1
lsblk -n -p -P -S -o NAME,TYPE,MODEL,SERIAL
Эта команда (соответсвенно с этими параметрами) выводит список всех запоминающих устройств в виде строк с переменными, переменные соответсвенно те, что указаны в конце, это только те, которые нужны мне. По параметру TYPE можно как раз выбрать именно те, которые мне нужны (например у жесткого диска этот параметр равен "disk", а у ддисковода "ram") вывод команды конечно же легко перенаправляется в файл, но хочется сразу получить его, без файла, пытаюсь через QProcess, но ни че не получается, не могу достаточно понятное разъяснение этого зверя найти.
По поводу открытия этих файлов через su, ноль эмоций... Ну это не важно, потом как нибудь поизучаю, сейчас то уже нашел более подходящее решение

Если у кого есть ссылочка на хорошую статью о QProcess, подкиньте пожалуйста

Добавлено через 3 минуты
Вот такой вод вывод у вышеуказанной команды, может кому пригодится. Там можно просто уйму параметров вывести (указывать можно либо по умолчанию - несколько основных, либо все - их просто туча , или же как у меня - перечислить необходимые
PowerShell
1
2
NAME="/dev/sr0" TYPE="rom" MODEL="CDDVDW SN-208DB " SERIAL="R8XW6YOD600185"
NAME="/dev/sda" TYPE="disk" MODEL="WDC WD5000LPCX-2" SERIAL="WD-WXA1E945YLRW"
2
 Аватар для Старый воин
93 / 92 / 21
Регистрация: 16.08.2017
Сообщений: 188
Записей в блоге: 1
17.01.2018, 00:07
Kapo, спасибо за информацию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2018, 00:07
Помогаю со студенческими работами здесь

Получить список дисков
Есть функция DWORD WINAPI GetLogicalDrives(void) Делаю следующий вызов в событии Form1_Shown Drivers=GetLogicalDrives(); ...

Получить список смонтированных дисков
Как получить список дисков в системе (то есть d:, c:, k: и т.д.) через коммандную строку? Нужно узнать какая буква принадлежит только что...

Получить список физических дисков
Здравствуйте! Как можно получить список имен физических дисков в формате PhysicalDriveN, где N - номер диска?

Как получить список дисков?
Буду писать вопросы кому не впадлу ответте. 1.Как получить список дисков все(a,d,c,e)? 2.Как узнать какие диски есьть CDROM? 3.Как...

Как получить список дисков на удаленном компьютере?
Подскажите, как получить список дисков на удаленном компьютере через idFTP?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru