c - 在Linux中使用fallocate()快速预分配大文件

标签 c linux filesystems

在 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/

相关文章:

c - 缓冲区溢出 - 退出函数后,字符数组未从堆栈中删除

c - 使用与号 (&) 和减号运算符可以实现什么效果?

Linux 脚本在两台服务器的 ksh 上表现不同

linux - 列出文件大小都在一个范围内的目录

ios - 如何将文件添加到应用组共享目录?

java - 如何导航到 JFileChooser 中的网络主机?

c - 使用libpq库从PostgreSQL的查询结果中获取(integer[])数组值

c++ - 从函数返回堆分配的指针是不礼貌的吗?

java - Java 项目中的 Selenium Chromedriver 超时问题

android - iOS 上是否有 "adb shell"的等效项