fuse:如何在写入之前获取要写入的文件的大小?

时间:2013-03-26 19:05:39

标签: c fuse

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

这意味着对于更大的文件(例如12720字节),可以使用

调用4次写入函数
1. size=4096, offset=0
2. size=4096, offset=4096
3. size=4096, offset=8192
4. size=432, offset=12288

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

如果块的长度小于4096,则表示您位于文件的末尾。来吧,写出缓冲区的内容!