资讯动态

lseek () 系统调用

发布时间:2026/8/30 15:24:49 来源:尧图企业网站定制
头文件 原型#include unistd.h off_t lseek(int fd, off_t offset, int whence);1.三个参数顺序与含义fd文件描述符已打开的文件offset偏移量可正可负向后 / 向前移动whence基准位置3 种宏SEEK_SET文件开头offset 从 0 开始SEEK_CUR当前读写位置offset 相对当前位置SEEK_END文件末尾offset 从文件长度算起2. 返回值成功返回新的文件偏移量距文件开头总字节数失败返回 -1设置 errno3. 内核执行校验顺序校验 fd 是否合法、可偏移管道、socket、终端不支持 lseek返回 - 1校验 whence 是否为合法三值之一根据 whence offset 计算新偏移更新文件表项的文件读写指针返回新偏移值4. 常用示例// 移到文件开头 lseek(fd, 0, SEEK_SET); // 移到文件末尾获取文件大小 off_t len lseek(fd, 0, SEEK_END); // 从当前位置向后跳100字节 lseek(fd, 100, SEEK_CUR); // 从末尾向前50字节 lseek(fd, -50, SEEK_END);5. 关键特性偏移可以超出文件长度后续 write 会产生文件空洞hole不占磁盘空间read/write 都会自动推进文件偏移管道、FIFO、套接字、标准终端不能使用 lseek调用直接报错offset 类型 off_t 是长整型大文件需用该类型接收返回值

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价