2013-03-26 32 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,你就知道你在文件的末尾。繼續寫下你的緩衝區的內容!

相關問題