FUSE API 的两种使用方法

FUSE 虚拟文件系统集成到我们的应用程序时,有两种使用策略,一种是使用比较上层的API,

主循环我们只能调用 ret = fuse_main (fargc, fargv, &my_handler, NULL) 这个主循环的接口,

 

my_handler我们只取我们关心API属性,如下所示

 

 

然后我们自己要来实现上面的各种 xmp_ 开头的函数。

 

 

还有一种是使用  fuse_session_loop 这个比较底层的函数来实现,这个时候我们要实现的API都是一些比较底层

的API, 比如下面的代码所示 :

 

 

具体的使用方法如下 :

 

 

 

底层的API使用起来相对灵活性大一点,本人推荐使用底层的API。当然了,上层的API使用起来相对简单一点。

 

下面复制了一个具体的底层API的实现,供大家参考。

 

 

另外在使用fuse的时候,要注意的是 struct fuse_file_info *fi 这个结构体数据的填充,

 

其中最关键的是 direct_io 和 nonseekable。

 

具体如下 :

                    fi->fh = socket(PF_INET, SOCK_STREAM, 0);
                    fi->direct_io = 1;
                    fi->nonseekable = 0;

 

设置了direct_io=1 可以提高文件读写的速度,一次IO的大小就不在局限于4K,

设置 nonseekable=0, 上层的应用才可以调用seek函数进行,否则无法seek。

 

这两个地方时很关键的。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

langeldep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值