ユーザースペースで動くプログラム(デーモン)によってファイルシステムを提供するためのソフトウェアです。
通常Linuxのファイルシステムはカーネルモジュールとして記述され、カーネル空間で動作しますが、FUSEではカーネル空間に最低限のプログラムを常駐させ、ユーザー空間で動作しているプロセスに各種リクエスト(read, write等)およびデータを送受信することでファイルシステムを実現します。このため、パフォーマンスに影響は出ますが、ファイルシステムにバグがあってもエラーとしてせき止められ、Panicが発生することはありません。
Linux上でデバイスドライバを作成するときと同じように、システムコール に対応する関数を記述し、登録する
FUSEのヘッダを読み込み
#include <fuse.h>
各関数を記述
static int hello_open(const char *path, struct fuse_file_info *fi) { ... }
fuse_mainにハンドラとパラメータを渡して登録する
int main(int argc, char *argv[]) { return fuse_main(argc, argv, &hello_oper); }
エラーコード定義のinclude
#include <errno.h>
エラーにあたる場合は適切なエラーコードを返してやる
./test ./hogehoge
アンマウントする場合はfusermountを使う
./test ./hogehoge -d
Ctrl+Cで終了させれば自動的にアンマウントされる
fusermount -u hogehoge