用于访问稀疏文件的操作系统 API?
Posted
技术标签:
【中文标题】用于访问稀疏文件的操作系统 API?【英文标题】:Operating system API for accessing sparse files? 【发布时间】:2010-12-04 06:45:27 【问题描述】:我至少需要测试文件中的字节范围是否确实存在或无效。
它需要在主要操作系统上运行:Unix (Linux/MacOSX/FreeBSD) 和 Windows。
我想仍然没有办法在文件中打洞,还是有一些文件系统特定的 API 和建议?这对于日志文件也非常有用。
【问题讨论】:
【参考方案1】:在 Windows 上,您可以使用 FSCTL_GET_RETRIEVAL_POINTERS 来查找文件簇和磁盘之间的映射。
相应的 Linux(可能还有其他一些 posixes)IOCTL 是 FIBMAP
【讨论】:
这是一篇关于 FIBMAP 的博文:smackerelofopinion.blogspot.com/2009/06/… Unix 花了 5 年(或者说 45 年?)为其添加 API。它现在称为“fallocate”,适用于 linux 内核 3.16 中的几乎所有文件系统。哇,人们抱怨窗户。【参考方案2】:我知道没有可移植的方法来测试稀疏性。要创建带孔的文件,您必须在零孔上seek()
,而不是写入它们。这显然只在创建新文件或扩展旧文件时有效。在预先存在的零上使用seek()
将无济于事。
【讨论】:
以上是关于用于访问稀疏文件的操作系统 API?的主要内容,如果未能解决你的问题,请参考以下文章