我试图为readdir()中的每条记录填充一个stat结构,并通过filler()将相应的stat传递给getattr。I read somewhere当在readdir中填充时,该FUSE只识别stat结构的某些字段(正切问题:总是这样吗?)显然,其中一个被接受的领域是圣伊诺。但是,当我为给定的记录在readdir()处填充st at结构的st_ino时,在getattr()处看不到该记录的相应更改。
也许值得注意的是,我试图用上述问题解决的问题是,我想按每条记录将(非POSIX)信息从readdir传递到getattr。最初,我的技巧是将一个唯一的标识符附加到每个作为主键的记录名中,然后添加到包含此(非POSIX)信息的数据库中。这个解决方案的问题是,用户在发出“ls”时会看到这个奇怪的命名方案。如果我可以将这个主键存储在st_ino字段中,那么我就可以唯一地标识记录,而不需要用户看到命名方案。所以我想解决这个问题的另一个办法是找到一种方法来改变readdir用ls打印到屏幕上的名称填充记录缓冲区的名称。不过,我不确定在不修改保险丝源的情况下,这是否可行。
感谢您的帮助!
最佳答案
很久以前我写了一些FUSE文件系统,这对我来说有点模糊。但是当我查看我的旧代码时,我发现FUSE允许一个私有的数据字段。您可以随意管理私有数据中的信息。这应该提供一种机制,将信息从readdir传输到getattr,而不会污染文件名空间或为特定用途保留的任何其他数据成员。
关于c - fuse :从readdir()到getattr()传递一个统计结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15373128/