【问题标题】:Operating system API for accessing sparse files?用于访问稀疏文件的操作系统 API?
【发布时间】:2010-12-04 06:45:27
【问题描述】:

我至少需要测试文件中的字节范围是否确实存在或无效。

它需要在主要操作系统上运行:Unix (Linux/MacOSX/FreeBSD) 和 Windows。

我想仍然没有办法在文件中打洞,还是有一些文件系统特定的 API 和建议?这对于日志文件也非常有用。

【问题讨论】:

    标签: c filesystems unix


    【解决方案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() 将无济于事。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2010-09-14
      • 2015-07-16
      • 2013-09-07
      • 2011-02-23
      • 1970-01-01
      相关资源
      最近更新 更多