文件IO详解---lseek函数详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件IO详解---lseek函数详解相关的知识,希望对你有一定的参考价值。
lseek函数用来设置当前文件偏移量。
======================================================
函数原型:
函数参数:
- fd:要操作的文件描述符
- offset:基于whence参数的偏移量
- whence:参考点位置
返回值:
- 调用成功时返回当前相对于文件开头的偏移量,以字节为单位
- 调用失败时返回 -1,并修改errno的值
=======================================================
whence参数详解:
- SEEK_SET:代表文件的开头
- SEEK_CUR:代表文件偏移量当前位置
- SEEK_END:代表文件末尾
=======================================================
关于lseek函数,要注意的两点:
- 并不是所有的文件类型都可以设置当前文件偏移量,管道文件和套接字文件就不可以设置当前文件偏移量。对于上面两种文件调用lseek会返回 -1 。
- 对于普通文件来说,当前文件偏移量一定是个非负整数;但有些特定文件的当前文件偏移量可以是负数,所以对lseek返回值进行出错检测的时候不能判断是否小于 0 ,而应该看是否和 -1 相等。
- 当前文件偏移量可以设置为大于当前文件的长度,这样再往文件中写入内容就会造成中间一部分的内容没有被写而直接跳过,这样的文件叫做空洞文件。空洞文件中的空洞是不会占用磁盘空间的,但是在显示文件逻辑大小的时候,空洞仍然会被计算进去。
以上是关于文件IO详解---lseek函数详解的主要内容,如果未能解决你的问题,请参考以下文章
Linux (openwritereadcloselseekchmodsync)操作文件的函数详解