Как создать файловую систему FUSE?

Вопрос даже не по конкретным языкам программирования. Как мне создать FUSE файловую систему?

Как я понимаю, мне надо лишь описать системные вызовы, применимые к файлам вообще. Ну, грубо говоря, пример из C:

struct fuse_operations {
    int open(const char* filename, int mode);
    int close(int fd);
    int lgetattr(const char* filename);
    ...
};

Только вот что я там должен [о]писать - неясно. Не говоря уже о том, как FUSE "объяснить", что твоя файловая система - не просто образ диска, а архив (fuse-zip) или, того круче, файлы расположены в оперативной памяти (tmpfs, ramfs, cramfs, rootfs). Вот как заставить FUSE "парсить" файлы из архива, или того круче, хранить файлы в ОЗУ?? И что я должен приписывать в fuse_operations, как именно мне описывать эти системные вызовы???


Ответы (1 шт):

Автор решения: eri

fuse всеравно где вы храните информацию. Драйвер просто транслирует системные вызовы в вашу программу.

Первое что нужно описать это вызов opendir(), readdir() - тогда отобразится диск с чемто внутри.

Пишите вызовы open(), read() и сможете читать виртуальные файлы.

→ Ссылка