打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ftruncate()

ftruncate()

函数功能:改变文件大小

相关函数:open、truncate

表头文件:#include <unistd.h>

函数原型:int ftruncate(int fd, off_t length)

函数说明:ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。如果原来的文件件大小比参数length大,则超过的部分会被删去

返 回 值:0、-1

错误原因:errno

          EBADF     参数fd文件描述词为无效的或该文件已关闭

          EINVAL    参数fd为一socket并非文件,或是该文件并非以写入模式打开

以上引用自http://www.cnscn.org/showthread.php?t=659

使用方法:fd一般可以fileno(FILE *fp)获取,标示文件当前的大小,lenggth则可由用户定义。此函数一般用在文件初始化或者重新为文件分配空间时。

注意事项:此函数并未实质性的向磁盘写入数据,只是分配了一定的空间供当前文件使用。当fd<length时,此时如果使用十六进制编辑工具打开该文件,你会发现文件末尾多了很多00,这就是执行这个函数后的效果。如果发生系统复位或者装置掉电以后,该函数所产生的作用将被文件系统忽略,也就是说它所分配的空间将不能被识别,文件的大小将会是最后一次写入操作的区域大小,而非ftruncate分配的空间大小,也就是说,文件大小有可能会被改变。

解决方法:可以在执行完ftruncate之后,在新空间的末尾写入一个或以上字节的数据(不为Ox00),这样新空间则不为空,文件系统会把这部分空间当成这个文件的私有空间处理,而不会出现文件大小改变的错误。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Linux C open打开文件,然后清空文件内容
Linux 共享内存(POSIX)
C实战 | 字符串替换
C语言编程中建立和解除内存映射的方法
文件io函数
来 左边 跟我一起画彩虹
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服