创建大小" x"文件的正确方法用于mmap等

时间:2015-02-22 17:47:24

标签: ios c posix

我需要创建一个精确 x 位的文件(然后是mmap')。

我认为使用lseek()ftruncate()就足够了,直到我看到来自各种来源的代码(例如Mozillafcntl() F_PREALLOCATE 首先然后使用ftruncate()

从文档中,我无法确定为什么会这样做,以及是否有必要。

1 个答案:

答案 0 :(得分:1)

不,没有必要。如果您使用ftruncate,则文件可能虚拟构造,意味着块在总分配块数中保留但未真正分配给文件(文件可能相对于文件有孔)他们分配的块)。在这种情况下,块分配将推迟到读取或写入为止。

如果您使用F_PREALLOCATE,则不会延迟分配。

我不确定这会产生什么真正的不同;可能是时间,但我真的不明白为什么。这可能是一个支离破碎的问题。