我正在编写一个程序,它将一些内容写入一个稀疏文件。说,我通过
fd = open(filepath, O_RDWR | O_CREAT | O_EXCL, 0644);
assert(fd != -1);
int s = ftruncate(fd, len);
len
很大,但实际内容可能只需要几个kbs。
然后我在这个文件上做内存映射 IO。如何确保从此文件中删除内容,以便不存储临时内容,并且实际存储仍然“稀疏”?
感谢您的任何建议。
我正在编写一个程序,它将一些内容写入一个稀疏文件。说,我通过
fd = open(filepath, O_RDWR | O_CREAT | O_EXCL, 0644);
assert(fd != -1);
int s = ftruncate(fd, len);
len
很大,但实际内容可能只需要几个kbs。
然后我在这个文件上做内存映射 IO。如何确保从此文件中删除内容,以便不存储临时内容,并且实际存储仍然“稀疏”?
感谢您的任何建议。
这个问题超出了C语言的范围。C 标准没有稀疏文件的概念,甚至没有 POSIX 文件句柄的概念。
答案是特定于操作系统的。对于 linux,您可以在这里找到解决方案:Linux 下操作稀疏文件的函数有哪些?和Linux 上的详细稀疏文件信息。