分类: 系统运维
2012-03-28 13:36:17
有时我们想要通过在文件末尾删除数据来裁切一个文件。我们可以在open时使用用O_TRUNC标志来清空一个文件,这是裁切的一个特殊例子。
这两个函数把已存在的文件裁切成length字节。如果文件之前的尺寸比length大,超过length后的部分便不再能被访问了。如果之前尺寸比
length小,效果依系统而定,但遵守XSI的系统将会增加文件尺寸。如果实现没有扩展一个文件,文件旧末尾与新末尾之间会被读为0(也就是说,文件里
很可能创建了一个空洞。)
ftruncate函数是POSIX.1的一部分,truncate函数是POSIX.1功能定义在SUS的XSI扩展。
4.4BSD之前的BSD版本通过truncate只能使文件变得更小。
Solaris还包含了一个fcntl的扩展(F_FREESP),允许我们释放文件的任何部分,而不仅仅是文件末的部分。
我们在13章里的一个程序里,需要在得到文件锁之后清空一个文件时,使用ftruncate。