【问题标题】:fuse: How do I get the size of the file that is going to be written before it's written?fuse:如何在写入之前获得要写入的文件的大小?
【发布时间】:2013-03-26 19:05:39
【问题描述】:

写入文件时,每个文件段都会调用fuse_operations.write对应的write函数。

这意味着对于更大的文件(例如 12720 字节),可以使用 write 函数调用 4 次

1. size=4096, offset=0
2. size=4096, offset=4096
3. size=4096, offset=8192
4. size=432, offset=12288

因为它有 4 个段,最大段大小为 4096 字节。

write 函数中,我想确定最后一个段大小何时为writen。我打算将所有段放入缓冲区,并使用最后写入的段来表示缓冲区现在包含整个对象,以便可以将其放在其他地方(例如对象存储)。通过在写入之前知道正在写入的对象的大小,我可以做一个简单的相等性测试file_size == size + offset 来确定最后一段被写入的时间。

【问题讨论】:

  • 您需要一个明确的文件结束指示符。在 C 中它是fclose()。在您的情况下,它可能是这样的特殊功能,也可能是您的 I/O 功能的附加参数。

标签: c fuse


【解决方案1】:

显然,我不能。文件处理程序关闭后,我只能将整个对象放在其他地方(例如对象存储)。

【讨论】:

    【解决方案2】:

    如果你的块的长度小于 4096,你就知道你在文件的末尾。继续写出缓冲区的内容!

    【讨论】:

    • 很好,如果我的文件是 4*4096 怎么办?
    猜你喜欢
    • 2023-04-02
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多