复制稀疏文件

Sha*_*dor 3 c linux file-io

我正在尝试理解Linux(UNIX)低级接口,并且想要编写一个代码,将带有空洞的文件复制到一个新文件中(再次使用孔).

所以我的问题是,如何读取第一个文件直到第一个洞,但直到文件的最后?如果我没弄错的话,read()到达第一洞(EOF)时返回0.

我正在考虑逐字节地寻找并试图读取这个字节,但是我必须事先知道漏洞的数量.

MvG*_*MvG 5

如果通过漏洞表示稀疏文件,则必须在输入文件中找到孔并在编写输出文件时使用lseek重新创建它们.从Linux 3.1开始,您甚至可以使用lseek跳转到孔的开头或结尾,如手册页中的详细描述.

正如ThiefMaster 已经指出的那样,正常的文件操作会将漏洞简单地视为零字节序列,因此您不会看到您提到的EOF.