Как получить устройство / раздел в Linux программно? - PullRequest
6 голосов
/ 13 марта 2011

Я очень плохо знаком с программированием в Linux.

Мои вопросы:

  • Можно ли программным способом прочитать UUID устройства или раздела в Linux?
  • Существует ли какой-либо C / C ++ API для приложений пользовательского пространства?

Я нашел несколько команд sudo vol_id --uuid /dev/sda1, sudo blkid и ls -l /dev/disk/by-uuid/.Но все они являются командами, которые должны выполняться в терминале.Но мне нужно добиться этого с помощью программы на C / C ++.

Может кто-нибудь помочь мне с этой проблемой.(К вашему сведению: мне нужно прочитать UUID корневой файловой системы ("/"), где установлен Linux.)

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Общий подход будет следующим:

  • выясните, на каком устройстве вы находитесь / разбирая /etc/mtab, например
  • , пройдите по каталогу /dev/disks/by-uuid (используя opendir/readdir/closedir) инайти, какой из них указывает на это устройство.

См. Функцию readlink для получения цели символической ссылки.Вы найдете множество примеров кода для разбора текстовых файлов на этом сайте или в вашей любимой поисковой системе.

0 голосов
/ 14 марта 2011

Поскольку blkid уже делает это, вы также можете просто посмотреть, как оно работает, и украсть решение, , если , вы соблюдаете лицензию util-linux (GPLv2).

...