Определение типа файловой системы файла с использованием функций 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
поле. Таким образом, мне не нужно перебирать смонтированные файловые системы. Сейчас я отредактирую вопрос со знанием дела.