C语言lseek()函数:移动文件的读写位置
(1)
相
关函
数:
dup, open, fseek
.
(2)
头文件:
#include <sys/types.h> #include <unistd.h>
(3)
定义函数:
off_t lseek(
int fildes, off_t offset, int whence);
(4)
函数说明:
每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如
O_APPEND)
, 则读写位置会指向文件尾. 当
read()
或
write()
时, 读写位置会随之增加,
lseek()
便是用来控制该文件的读写位置. 参数
fildes
为已打开的文件描述词, 参数
offset
为根据参数whence来移动读写位置的位移数.
(5)
参数
whence
为下列其中一种:
SEEK_SET
参数
offset
即为新的读写位置.
SEEK_CUR
以目前的读写位置往后增加
offset
个位移量.
SEEK_END
将读写位置指向文件尾后再增加
offset
个位移量. 当
whence
值为
SEEK_CUR
或
SEEK_END
时, 参数
offet
允许负值的出现
.
(6)
下列是教特别的使用方式:
1) 欲将读写位置移到文件开头时:
lseek(int fildes, 0, SEEK_SET)
;
2) 欲将读写位置移到文件尾时:
lseek(int fildes, 0, SEEK_END)
;
3) 想要取得目前文件位置时:
lseek(int fildes, 0, SEEK_CUR)
;
(7)
返回值:
当调用成功时则返回目前的读写位置, 也就是距离文件开头多少个字节. 若有错误则返回
-1, errno
会存放错误代码.
附加说明:
Linux
系统不允许
lseek()
对
tty
装置作用, 此项动作会令
lseek()
返回
ESPIPE.