2009-10-28 2 views
2

Моя программа считывает пути устройства, такие как /dev/rdisk0, от ввода, а затем выглядит IOKit для диска с именем BSD disk0. Для этого мне нужно удалить /dev/r с пути.Есть ли способ получить номер BSD устройства в Mac OS X?

Жесткое кодирование этого пути может быть нарушено в будущих версиях Mac OS X. Поэтому я, хотя и по-другому: я мог бы сопоставить IOService с использованием основной и младшей версии устройства BSD.

Вот мой вопрос: возможно ли извлечь BSD младшие и основные номера из пути?

ответ

3

Да. Используйте системный вызов stat. Член struct stat, который вы ищете, это st_dev, который, как я считаю, является одним из основных и второстепенных после небольшой смены.

+0

Это работает. 'dev_t' - это 32-битное целое число, первые 8 бит являются основной версией, а остальные 24 - второстепенной. Есть ли способ сделать этот перенос в случае, если 'dev_t' будет изменен на 64-битное целое число? –

+0

в на моей машине OpenBSD, для этого существуют макросы major() и minor(). – asveikau

+0

@ asveikau: Спасибо, нашел их. Я мог бы поклясться, что эти функции не были там вчера, когда я их искал. –

 Смежные вопросы

  • Нет связанных вопросов^_^