首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FUSE扩展属性

FUSE扩展属性
EN

Stack Overflow用户
提问于 2013-04-16 19:55:43
回答 1查看 2.7K关注 0票数 1

我正在尝试实现一个FUSE文件系统,包括设置/获取扩展文件属性的能力。在本例中,我感兴趣的属性是创建一个布尔条件,将文件标记为加密的。假设我有一个名为test.txt的文件。在终端窗口中,我可以轻松地完成以下操作:

setfattr -n user.encrypted -v 1 test.txt getfattr -n user.encrypted test.txt

得到输出:

档案: test.txt user.encrypted="1“

因此,我知道我的系统被正确地设置为使用扩展属性。

但是,我只能从FUSE内部编程地设置和获取这些属性。例如,我有以下功能:

代码语言:javascript
复制
/* File open operation */
int bb_open(const char *path, struct fuse_file_info *fi)
{
    int retstat = 0;
    int fd;
    int isEncrypted;
    char user[] = "user";
    char encAttr[] = "encrypted";
    
    fd = open(path, fi->flags);
    if (fd < 0)
        retstat = bb_error("bb_open open");
          
    log_msg("\nAbout to get encryption attribute\n");  
    /* get the encryption attribute */
    isEncrypted = fgetxattr(fd, user, encAttr, 1);
    
    log_msg("\nisEncrypted: %d\n", isEncrypted);

    return retstat;
}

当我运行这个属性时,即使在从命令行设置这个属性之后,fgetxattr也总是失败(即它返回的值为-1)。我的日志文件中的输出是:

isEncrypted = -1

显然,我调用这个函数是错误的,但是我不知道如何纠正这个错误。有人能帮忙吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-04-28 13:54:31

您需要在FUSE文件系统中实现以下功能:

  • 获取受支持的扩展属性列表的李斯特
  • 获取扩展属性值的[医] getxattr
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16045921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档