在 Windows 上,查找过去的 EOF 并截断文件(通过 SetEndOfFile()
)允许预先分配大文件,而无需实际将额外的零写入磁盘如果 ,之后,我按顺序写入文件(我这样做)。
如何在Linux下达到同样的效果?似乎 ftruncate() 创建了一个稀疏文件,这不是我想要的,因为它不会减少磁盘可用空间。这让我要考虑fallocate()
,但是哪些文件系统完全支持这个函数(原生地,不是由 glibc 模拟),或者更好:
哪些主流文件系统不支持fallocate()
?
最佳答案
至少以下文件系统支持该操作:
XFS(自 Linux 2.6.38 起)
ext4(自 Linux 3.0 起)
Btrfs(自 Linux 3.7 起)
tmpfs(5)(自 Linux 3.5 起)
关于c - 在Linux中使用fallocate()快速预分配大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888304/