我需要一个函数,它将在linux中创建一个固定大小的文件.功能像truncate或fopen,fseek,fclose,不是解决方案,因为,他们将用零填充打开的文件,但它没有必要,我没有时间这个.那么是否有一些功能,它只会打开一个固定长度的文件而不是填充缓冲区?
提前致谢.
cni*_*tar 10
系统调用不会用零填充文件.它只是提升文件的报告大小并在其中留下漏洞.truncate(2)
当你从中读取它时,你会得到零,但这只是操作系统的便利.
truncate()和ftruncate()函数使得由path命名或由fd引用的常规文件被截断为精确长度字节的大小.
如果先前的文件较短,则会扩展,扩展部分读取为空字节('\ 0').
关于孔(来自TLPI):
孔的存在意味着文件的标称大小可能大于它使用的磁盘存储量(在某些情况下,相当大).
文件系统和漏洞:
文件系统可以在i节点和间接指针块中标记(使用值0)适当的指针,而不是为文件中的空穴分配空字节块,以指示它们不引用实际磁盘块.
正如Per Johansson所说,这取决于文件系统.
大多数本机UNIX文件系统都支持文件漏洞的概念,但许多非本地文件系统(例如,微软的VFAT)却不支持.在不支持漏洞的文件系统上,将显式空字节写入文件.
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |