在Windows上,寻找过去的EOF并截断文件(通过SetEndOfFile()
)允许预先分配一个大文件而不实际将额外的零写入磁盘,如果之后我按顺序写入文件(我这样做)。
如何在Linux中实现相同的效果?好像ftruncate()
创建了一个稀疏文件,这不是我想要的,因为它不会减少磁盘可用空间。这让我去了fallocate()
,但是哪些文件系统完全支持这个功能(原生,不是由glibc模拟),或者更好:
哪些主流文件系统不支持fallocate()
?
至少在以下文件系统上支持该操作: