Linux ---lseek() 函数
来源:互联网 发布:淘宝哪家店衣服好看 编辑:程序博客网 时间:2024/05/27 06:13
每个打开的文件都有一个与其相关连的“当前文件偏移量”( current file offset )。它通常是一个非负整数,用以度量从文件开始处计算的字节数。通常,读、写操作都从当前文件偏移量开始,并使偏移量增加所读写的字节数。按系统默认情况,当打开一个文件时,除非指定 O_APPEND 选项,否则该偏移量设置为 0。
lseek调用仅将当前的文件偏移量记录在内核中,它并不引起任何的 I/O 操作。然后,该偏移量用于下一个读或写操作。
函数原型
#include<unistd.h>
off_t lseek(int fildes,off_t offset ,int whence);
参数fildes 为已打开的文件描述词,参数offset 为根据参数whence来移动读写位置的位移数。
whence为下列其中一种:(SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2).
SEEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。
下列是较特别的使用方式:
1) 欲将读写位置移到文件开头时:
lseek(int fildes,0,SEEK_SET);
2) 欲将读写位置移到文件尾时:
lseek(int fildes,0,SEEK_END);
3) 想要取得目前文件位置时:
lseek(int fildes,0,SEEK_CUR);
返回值
当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。
可能设置erron的错误代码:
EBADF: fildes不是一个打开的文件描述符。
ESPIPE:文件描述符被分配到一个管道、套接字或FIFO。
EINVAL:whence取值不当。
注:Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-01/111699.htm
lseek调用仅将当前的文件偏移量记录在内核中,它并不引起任何的 I/O 操作。然后,该偏移量用于下一个读或写操作。
函数原型
#include<unistd.h>
off_t lseek(int fildes,off_t offset ,int whence);
参数fildes 为已打开的文件描述词,参数offset 为根据参数whence来移动读写位置的位移数。
whence为下列其中一种:(SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2).
SEEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。
下列是较特别的使用方式:
1) 欲将读写位置移到文件开头时:
lseek(int fildes,0,SEEK_SET);
2) 欲将读写位置移到文件尾时:
lseek(int fildes,0,SEEK_END);
3) 想要取得目前文件位置时:
lseek(int fildes,0,SEEK_CUR);
返回值
当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。
可能设置erron的错误代码:
EBADF: fildes不是一个打开的文件描述符。
ESPIPE:文件描述符被分配到一个管道、套接字或FIFO。
EINVAL:whence取值不当。
注:Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-01/111699.htm
阅读全文
0 0
- Linux ---lseek() 函数
- linux文件函数-lseek
- Linux ---lseek() 函数
- Linux ---lseek() 函数
- Linux---lseek函数
- linux下 lseek函数用法
- linux 系统函数记录 lseek
- linux下lseek()函数理解
- linux lseek函数使用感受
- linux之lseek函数解析
- linux下 lseek函数用法
- UNIX/Linux函数lseek说明
- Linux系统lseek函数作用
- Linux系统库函数 -- lseek函数用法
- Linux系统函数学习之lseek
- Linux系统库函数 -- lseek函数用法
- Linux系统库函数 -- lseek函数用法
- Linux系统库函数 -- lseek函数用法
- 数据库连接池
- 欢迎使用CSDN-markdown编辑器
- 关于路由表及路由条目生成算法
- ibatis
- OpenFlow协议-OpenFlow Switch篇
- Linux ---lseek() 函数
- SpringMVC
- 从高考到程序员
- 线性表的应用——求解两个多项式相加问题描述(顺序表求解)
- AngularJs大全
- 生产者-消费者模型
- Myeclipse导入包快捷键
- powerdesigner建模
- 饭卡(01背包)