gpt4 book ai didi

linux - 如果我截断到比原来更大的尺寸,ftruncate() 会复制数据吗?

转载 作者:太空狗 更新时间:2023-10-29 12:05:04 25 4
gpt4 key购买 nike

来自 http://pubs.opengroup.org/onlinepubs/7908799/xsh/ftruncate.html 的描述,不是很清楚 ftruncate 是如何工作的。

如果假设,我将文件截断为 1GB,然后截断为 2GB。如果 ftruncate 在旧的 1GB 之后没有找到额外的 1GB 空间,它是否将数据复制到新位置以保持文件连续?

最佳答案

没有

文件开始时并不连续。使用了树状结构的 block map ,因此只需要向 map 添加更多的 block 。

此外,虽然这不是 Posix 要求,但所有真正的类 Unix 系统都支持 sparse files,所以大多数情况下它只需要增加长度而不是实际添加 block 。稍后阅读会注意到(在内核内部)缺少支持 block ,内核会知道只返回零。稍后写入 un-backed 区域自然需要最终开始分配 block 。

关于linux - 如果我截断到比原来更大的尺寸,ftruncate() 会复制数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com