我已经使用我的C程序在我的Linux系统上打开了一个输出文件,我已经posix_fallocate
为它预留了束的磁盘空间。
超过我的需要,因为我不知道我需要多少。
天真地,我希望当我关闭文件时,它会被修剪到我实际需要的空间。但是,当然,生活并不那么容易。
那么,怎么做我为输出预留了一堆空间然后将其修剪为我实际使用的空间?
谢谢!
答案 0 :(得分:3)
行为是预期的行为 - 引用posix_fallocate
手册页:
If the size of the file is less than offset+len, then the file is increased to this size; otherwise the file size is left unchanged.
要在关闭之前修复文件大小,请查看ftruncate
:
The truncate() and ftruncate() functions cause the regular file named by path or referenced by fd to be truncated to a size of precisely length bytes.