修剪用`posix_fallocate`创建的文件

时间:2012-03-01 16:24:37

标签: c linux file-io posix

我已经使用我的C程序在我的Linux系统上打开了一个输出文件,我已经posix_fallocate为它预留了的磁盘空间。

超过我的需要,因为我不知道我需要多少。

天真地,我希望当我关闭文件时,它会被修剪到我实际需要的空间。但是,当然,生活并不那么容易。

那么,怎么做我为输出预留了一堆空间然后将其修剪为我实际使用的空间?

谢谢!

1 个答案:

答案 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.