簡體   English   中英

如何檢查是否可以創建給定長度的文件?

[英]How to check if a file of given length can be created?

我想創建一個給定長度(即2GB)的非稀疏文件,但我想在實際將內容寫入磁盤之前檢查是否可行。

換句話說,我想避免在寫入時獲得ENOSPC (設備上沒有剩余空間)。 我不想創建一個大小為2GB的“測試文件”或類似的東西,只是為了檢查是否有足夠的空間。

那可能嗎?

使用posix_fallocate(3)

從描述:

函數posix_fallocate()確保為描述符fd引用的文件分配磁盤空間,該文件用於從offset開始並繼續len字節的范圍內的字節。 在成功調用posix_fallocate()之后,由於缺少磁盤空間,后續寫入指定范圍內的字節將保證不會失敗

您可以使用statvfs函數來確定給定文件系統有多少空閑字節(和inode)。

這應該足以進行快速檢查,但要記住,這並不能保證你能夠寫得那么多(或者,就此而言,寫作不會失敗) - 其他應用程序也可以寫作到(或刪除)相同的文件系統。 所以繼續檢查各種寫入錯誤。

fallocateposix_fallocate可用於分配(和解除分配)大塊。 對於您的用例可能是更好的選擇。 (查看手冊頁,您可能會發現很多有趣的空間管理選項。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM