Как я могу получить тип файловой системы с помощью API в OSX/macOS?

Теперь я использую statfs для получения типа файловой системы. Я думал, что значение f_type из возвращенного struct statfs является одним из значений, определенных в enum fs_type_num из http://opensource.apple.com/source/xnu/xnu-3248.60.10/bsd/vfs/vfs_conf.c

До macOS 10.12 значение f_type из struct statfs было 17 для HFS/HFS+. В macOS 10.12 значение равно 23, и я не вижу этого значения, определенного в enum fs_type_num.

Это там файл, где определены возможные значения f_type из struct statfs?

Или есть лучший API для получения типа файловой системы?


person usain    schedule 06.09.2016    source источник


Ответы (1)


Вот что сработало для меня.

В первую очередь включите mount.h.

#include <sys/mount.h>

Затем следующее даст вам тип, подтип и имя типа.

struct statfs output;
statfs("/", &output);
NSLog(@"Type: %u", output.f_type);
NSLog(@"Subtype: %u", output.f_fssubtype);
NSLog(@"Type name: %s", output.f_fstypename);

Это работает в macOS и iOS.

И для тех, кому интересно, вот результаты, которые я получил на нескольких устройствах.

macOS 10.12.3

  • Тип: 23
  • Подтип: 1
  • Название типа: hfs

айфон 10.2.1

  • Тип: 23
  • Подтип: 3
  • Название типа: hfs

iPad на 10.3

  • Тип: 22
  • Подтип: 1
  • Имя типа: apfs
person Alistair McMillan    schedule 31.03.2017