Linux系统编程08-lseek.md
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
-
参数:
-
fd: 文件描述符,通过open得到,用来操作某个文件
-
offset: 偏移量
-
whence: 指定的标记
- SEEK_SET 设置文件指针的偏移量
- SEEK_CUR 设置偏移量,当前位置+第二个参数offset的值
- SEEK_END 设置偏移量,文件大小+第二个参数offset的值
-
-
返回值:返回文件指针的位置
-
作用:
-
移动文件指针到文件头 lseek(fd, 0, SEEK_SET);
-
当前文件指针的位置 lseek(fd, 0, SEEK_CUR);
-
获取文件长度 lseek(fd, 0, SEEK_END);
-
拓展文件长度,当前文件10b -> 110b,增加了100个字节 lseek(fd,100,SEEK_END);
需要写一次数据
-
实例:拓展文件的长度
lseek.c
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
int fd = open("hello.txt", O_RDWR);
if (fd == -1)
{
perror("open err");
return -1;
}
//拓展文件长度
int ret = lseek(fd, 100, SEEK_END);
if (ret == -1)
{
perror("lseek err");
return -1;
}
//写入空数据, 实现拓展
write(fd, " ", 1);
//关闭文件
close(fd);
return 0;
}