lseek函数主要用来改变文件偏移量。

函数原型为:

#include <sys/types.h>
#include <unistd.h>

       off_t lseek(int fd, off_t offset, int whence);

其中whence有以下几种类型:

SEEK_SET 0 偏移值是offset
SEEK_CUR 1 偏移值是offset加当前位置
SEEK_END 2 偏移值是offset加文件大小

不建议直接用数值。 lseek函数允许把偏移值设定的比文件大,也就是在文件里留一个“洞”

返回值:

如果成功运行,lseek返回改变后的文件偏移,否则返回-1,并且输出相应的errno;

其中errno 的值有:

EBADF fd不是一个打开的文件描述符
EINVAL whence不是上述三种值中的一个
EOVERFLOW 最终偏移值超出了off_t的表示范围
ESPIPE fd是一个pipe,socket或者FIFO