关于在c中实现FUSE文件系统的说明

我正在尝试实现一个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 method ExFuse::getAttributes which does the job of getattr 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).

上一篇:如何在CentOS 8服务器上安装Wireguard


下一篇:保险丝:在readdir中设置填充函数的偏移量