首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >假定位()做什么?

假定位()做什么?
EN

Stack Overflow用户
提问于 2014-04-02 18:36:13
回答 1查看 5.4K关注 0票数 3

实际上,我有两个问题。

fallocate()做什么?

我阅读了手册页,并有以下的理解。对于支持文件孔的文件系统,fallocate()用于打孔并在文件中分配新的空间。对于没有漏洞的文件系统,fallocate()只能用于在文件结束后分配新的空间,也就是说,只有在len + offset > file_size时才有效果。

我的理解正确吗?如果是这样,我也有以下问题。

扩展文件时fallocate()ftruncate()的比较

现在,我想要创建一个新文件,并在文件中分配一个特定大小的零填充字节。我意识到fallocate()ftruncate()都能胜任这项工作。他们有什么区别?

顺便说一句,我知道fallocate()不是可移植的,但是由于我的程序只用于Linux,所以没有考虑到移植到其他类Unix系统的可能性。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-02 18:40:28

在代码中使用假定位(3)命运截断(2)的不同之处在于(在支持它的文件系统上,例如Ext4),磁盘空间确实是由posix_fallocate保留的,但是ftruncate通过添加漏洞(并且不保留磁盘空间)扩展文件。

例如,如果您的磁盘是100 G字节,并且posix_fallocate是一个5Gb文件,那么您将看到(使用df)可用空间已经减少(从调用之前开始);如果您只执行了一个ftruncate,则不会看到可用空间减少。

另见这个答案中的相关问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22820139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档