Заблокировать информацию об устройстве без монтирования в Linux
-
29-10-2019 - |
Вопрос
Я пытаюсь получить некоторую информацию (в частности, размер блока) блочного устройства в Linux на C ++.Можно ли получить размер блока устройства без его монтирования и, возможно, без просмотра динамических файлов (например, в /sys
), но только с помощью системного вызова.
Я пытался использовать stat
, но он возвращает данные о файловой системе /dev
, если я спрашиваю о /dev/sdb2
.
Если это невозможно с системным вызовом, где мне искать в динамических файлах (тоже не смог найти).
Решение
Вы хотите использовать ioctl
, в частности, BLKSSZGET
.
Цитата linux / fs.h:
общийНепроверенный пример:
общийДругие советы
Я думаю, что значение ioctl
должно быть скорее unsigned long
, чем size_t
(последний больше связан с памятью), я бы также инициализировал его значением 0 (на тот случай, если BLKSSZGET
вместо этого возвращает unsigned int
).