文件截断



注释:truncate

[trʌŋ'keɪt] vt.截面的; 截头的; 缩短了的; 截去顶端或末端; 

如果我们需要在文件尾端处截去一些数据以缩短文件长度,可以通过下面两个函数完成:

#include <unistd.h>
#include <sys/types.h>

int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);


ftruncate和truncate都会将参数指定的文件的大小修改为参数length指定的大小。 如果原来的文件大小比参数length大,则超过的部分会被删除,如果文件以前的长度短于length,则其效果与系统有关。 执行成功则返回0,失败返回-1,错误原因存于errno。

调用truncate失败后,对应的errno值可能是:
        EACCESS 参数path所指定的文件无法存取
        EROFS 欲写入的文件存在于只读文件系统内
        EFAULT 参数path指针超出可存取空间
        EINVAL 参数path包含不合法字符
        ENAMETOOLONG 参数path太长
        ENOTDIR 参数path路径并非一目录
        EISDIR 参数path指向一目录
        ETXTBUSY 参数path所指的文件为共享程序,而且正被执行中
        ELOOP 参数path有过多符号连接问题
        EIO I/O存取错误

调用ftruncate失败后,对应的errno值可能是:
        EBADF 参数fd文件描述词为无效的或该文件已关闭。
        EINVAL 参数fd 为socket 并非普通文件,或是该文件并非以写入模式打开。


你可能感兴趣的:(文件截断)