Определение типа файловой системы файла с использованием функций BSD

Мне нравится получать свойства для свойства тома конкретного пути к файлу, как показано mount команда, не используя эту команду и вместо этого вызывая POSIX или связанные API.

При использовании mount Команда на OS X, я получаю список всех доступных томов. man mount указывает мне на getfsent, который возвращает struct fstab структура с данными, которые меня интересуют.

Когда я призываю getfsent() в первый раз я получаю информацию о корне фс, т.е. для "/".

Проблема в том, что я не могу получить дополнительные точки монтирования таким образом. man getfsent предлагает мне просто несколько раз вызвать его, чтобы узнать о дополнительных точках монтирования, но следующий вызов возвращает NULL. Я подозреваю, что эта функция возвращает только то, что содержит фактический файл /etc/fstab, а не другие тома, которые OS X динамически монтирует позже.

Но так как mount Команда может перечислить эти дополнительные тома, должен быть способ. Что это? В качестве альтернативы я мог бы просто взглянуть на исходный код, но не могу понять, в какую из множества загрузок, доступных с opensource.apple.com, он включен.

Обновление: решение для вывода списка всех подключенных томов см. В разделе Как выполнить итерации всех подключенных файловых систем в OSX.

1 ответ

Оказывается, что для изучения свойств, таких как тип файловой системы, определенного объема файла, я также могу вызвать statfs() и зачитать fstypename поле. Таким образом, мне не нужно перебирать смонтированные файловые системы. Сейчас я отредактирую вопрос со знанием дела.

Другие вопросы по тегам