lseek()调用用来定位文件指针,用户可以定位到指定的位置进行读写等操作。
#include <sys/types.h>
#include <unistd.h>
off_t lseek (int fd, off_t pos, int origin);
origin的参数值如下:
SEEK_CUR:从当前位置开始定位 当前值+偏移量(pos) pos可正可负也可为零。
SEEK-END:从文件的末尾开始定位 文件的长度+偏移量(pos) pos可正可负也可为零。
SEEK_SET:从文件的起始位置开始定位 文件开头加上偏移量即可
定位读写:Linux提供了pread和pwrite来替代lseek。
#define _XOPEN_SOURCE 500
#include <unistd.h>
ssize_t pread (int fd, void *buf, size_t count, off_t pos);
该调用从文件描述符fd的文件中pos位置读取count字节的数据到buf中
ssize_t pwrite (int fd, const void *buf, size_t count, off_t pos);
该调用从文件描述符fd的pos位置写count个字节的数据到buf