2013-03-26 112 views
1

当写入文件时,write函数.writefuse_operations中对应于每个文件段。fuse:如何在写入之前获取要写入的文件的大小?

这意味着,对于一个较大的文件(例如12720字节)中,写功能可以与

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

称为4倍,因为它有4个片段与4096个字节最大段大小。

write函数里面,我想确定最后一个段的大小是write n。我打算把所有的段放到一个缓冲区中,并使用这个最后写入的段来指示缓冲区现在包含整个对象,以便它可以放在别的地方(比如对象存储区)。通过在写入对象之前知道正在写入的对象的大小,我可以做一个简单的相等性测试file_size == size + offset来确定最后一个段的写入时间。

+1

您需要一个明确的文件结束指示符。在C中它是'fclose()'。在你的情况下,它可能是一个特殊的功能或者你的I/O功能的附加参数。 – 2013-03-26 20:45:28

回答

1

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

+0

你是如何处理这种情况的? – Sagar 2018-03-05 08:10:57

-1

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

相关问题