我需要一个函数,它将在linux中创建一个固定大小的文件。像truncate
或fopen,fseek,fclose
这样的函数不是一个解决方案,因为它们会用零填充打开的文件,但这不是必需的,我没有时间这样做。那么有没有一些函数,它只会打开一个固定长度的文件,而不是填充缓冲区?是否可以在linux中创建一个固定大小的文件?
在此先感谢。
我需要一个函数,它将在linux中创建一个固定大小的文件。像truncate
或fopen,fseek,fclose
这样的函数不是一个解决方案,因为它们会用零填充打开的文件,但这不是必需的,我没有时间这样做。那么有没有一些函数,它只会打开一个固定长度的文件,而不是填充缓冲区?是否可以在linux中创建一个固定大小的文件?
在此先感谢。
系统调用truncate(2)
不填充该文件与零。它只是提高了文件的报告大小,并留下了漏洞。
当你读它,你做得到零,但这只是一个方便的操作系统。
的截断()和ftruncate()函数导致命名 由路径或通过FD引用的常规文件被截断的尺寸的精确 长度字节。
如果之前的文件较短,则将其扩展,并将扩展的 零件读为空字节('\ 0')。
关于(从TLPI)孔:
孔的存在意味着文件的标称尺寸可以比磁盘存储它利用(在某些情况下,量越大 , 相当大)。
文件系统和孔:
而不是分配用于在一个文件中的孔空字节的块,的 文件系统可以只标记(具有值0) 适当的指针i节点和间接指针块中,以指示它们 不引用实际的磁盘块。
由于Per Johansson指出,这取决于文件系统。
大多数本地UNIX文件系统支持文件洞的概念,但许多非本地文件系统(例如Microsoft的VFAT)不支持。在不支持漏洞的 文件系统上,写入文件的显式空字节为 。
...提供的文件系统支持它,但ext2/3/4呢。 –