在Linux中,lseek函數用于設置文件偏移量。它的原型如下:
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
參數說明:
fd
:文件描述符,用于指定要設置偏移量的文件。offset
:偏移量,可以是正數、負數或零。正數表示向文件末尾方向移動,負數表示向文件開頭方向移動,零表示從文件開始位置處開始。whence
:偏移量的起始位置。可以是以下值之一:
SEEK_SET
:相對于文件開頭位置。SEEK_CUR
:相對于當前文件偏移位置。SEEK_END
:相對于文件末尾位置。返回值:
下面是一個使用lseek函數的示例:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
int main() {
int fd = open("test.txt", O_RDWR);
if (fd == -1) {
perror("open");
return 1;
}
off_t offset = lseek(fd, 0, SEEK_END);
if (offset == -1) {
perror("lseek");
close(fd);
return 1;
}
printf("Current offset: %ld\n", offset);
close(fd);
return 0;
}
這個示例中,首先通過open函數打開一個文件,然后使用lseek函數將文件偏移量設置為文件末尾位置(0表示偏移量為0)。最后,打印出新的文件偏移量。
注意,使用lseek函數時需要注意文件打開方式。如果文件以只讀方式打開(例如使用O_RDONLY標志),則lseek函數將不起作用。