Пишу программу для тестирование железа, и для тестирование жёстких дисков необходимо получить список жёстких дисков и их соответствие точкам монтирования (если они есть) и разумеется файлу устройства типа
/dev/sd*
Для этих целей, я использовал удобную программу
lsblk, которая при запросе даёт всё что у ней спрашивают:
lsblk -io KNAME,TYPE,SIZE,MODEL,MOUNTPOINT
KNAME TYPE SIZE MODEL MOUNTPOINT
sda disk 465.8G WDC WD5000AZRX-0
sda1 part 457.9G /
sda2 part 1K
sda5 part 7.9G [SWAP]
sr0 rom 1024M iHAS124 W
Удобно можно встроить в код программы и далее парсить её вывод и мучить соответствующий жёсткий диск (отбирая строку содержащую disk)
FILE * fp = popen("lsblk -io KNAME,TYPE,SIZE,MODEL,MOUNTPOINT", "r");
...// проверка на ошибки
while(fgets(buf, sizeof(buf) -1,fp)) {
if (strstr(buf, "disk")) {
//пошли тут тестировать
}
Беда пришла от туда, откуда не ждали. Этой программы нет на сборке дебиана, на которой будет проводится тест (в репах тоже нет). Поменять сборку нельзя. Есть ли какие-то альтернативные и простые варианты получить подобный список, например через /proc или /sys?