我正在尝试实现一个FUSE文件系统,并在阅读后.我想我已经找到了如何实现它.我会说明我对实施的想法.如果对或错,请告诉我.
一个实现文件系统需要使用任何人认为合适的函数(比如getmptr函数的xmp_getattributes)实现的操作,然后将这些函数映射到fuse_operations类型的结构中的相应函数.
static struct fuse_operations xmp_oper =
{
.getattr = xmp_getattributes,
//more declarations...
};
现在,如果我使用类ExFuse来实现FUSE文件系统,并且我有一个方法ExFuse :: getAttributes,它在实现中完成getattr的工作.然后,我的声明将改为
static struct fuse_operations xmp_oper =
{
.getattr = ExFuse::getAttributes,
//more declarations...
};
我对么?另外,有没有其他方法在C中实现FUSE,这比静态结构声明更好?
解决方法:
if I have used a class
ExFuse
to implement a FUSE filesystem and I have a methodExFuse::getAttributes
which does the job ofgetattr
in the implementation. Then, my declaration would change as
static struct fuse_operations xmp_oper =
{
.getattr = ExFuse::getAttributes,
//more declarations...
};
这是错的. FUSE需要一个指向函数的指针,但ExFuse :: getAttributes是一个指向成员方法的指针(因为你没有明确说它是一个静态方法,我只能假设它是一个成员方法). They are not the same thing.
您需要使用普通函数或静态方法.
is there any other way of implementing FUSE in C++ which is better than the static struct declaration?
恐怕不是. FUSE是用C语言编写的,希望你坚持使用“C方式”.就公共接口而言,这对于使用C范例几乎没有余地(当然,只要你不扔,你可以在私有实现中做你想做的事,但这对你没有帮助你把接口写到FUSE).
标签:c,fuse 来源: https://codeday.me/bug/20190831/1779280.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。