码迷,mamicode.com
首页 > 其他好文 > 详细

文件IO详解(七)---lseek函数详解

时间:2016-10-01 12:51:11      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

lseek函数用来设置当前文件偏移量。
======================================================
函数原型:
技术分享
技术分享
函数参数:
  • fd:要操作的文件描述符
  • offset:基于whence参数的偏移量
  • whence:参考点位置
返回值:
  • 调用成功时返回当前相对于文件开头的偏移量,以字节为单位
  • 调用失败时返回 -1,并修改errno的值
=======================================================
whence参数详解:
  • SEEK_SET:代表文件的开头
  • SEEK_CUR:代表文件偏移量当前位置
  • SEEK_END:代表文件末尾
=======================================================
关于lseek函数,要注意的两点:
  • 并不是所有的文件类型都可以设置当前文件偏移量,管道文件和套接字文件就不可以设置当前文件偏移量。对于上面两种文件调用lseek会返回 -1 。
  • 对于普通文件来说,当前文件偏移量一定是个非负整数;但有些特定文件的当前文件偏移量可以是负数,所以对lseek返回值进行出错检测的时候不能判断是否小于 0 ,而应该看是否和 -1 相等。
  • 当前文件偏移量可以设置为大于当前文件的长度,这样再往文件中写入内容就会造成中间一部分的内容没有被写而直接跳过,这样的文件叫做空洞文件。空洞文件中的空洞是不会占用磁盘空间的,但是在显示文件逻辑大小的时候,空洞仍然会被计算进去。

文件IO详解(七)---lseek函数详解

标签:

原文地址:http://www.cnblogs.com/frank-yxs/p/5925582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!