Заблокировать информацию об устройстве без монтирования в Linux

StackOverflow https://stackoverflow.com/questions/8416241

  •  29-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь получить некоторую информацию (в частности, размер блока) блочного устройства в Linux на C ++.Можно ли получить размер блока устройства без его монтирования и, возможно, без просмотра динамических файлов (например, в /sys), но только с помощью системного вызова.

Я пытался использовать stat, но он возвращает данные о файловой системе /dev, если я спрашиваю о /dev/sdb2.

Если это невозможно с системным вызовом, где мне искать в динамических файлах (тоже не смог найти).

Это было полезно?

Решение

Вы хотите использовать ioctl , в частности, BLKSSZGET.

Цитата linux / fs.h:

общий

Непроверенный пример:

общий

Другие советы

Я думаю, что значение ioctl должно быть скорее unsigned long, чем size_t (последний больше связан с памятью), я бы также инициализировал его значением 0 (на тот случай, если BLKSSZGET вместо этого возвращает unsigned int).

общий
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top