Back to questions
Junior — Middle
81
Можете объяснить, для чего используется системный вызов lseek в операционной системе?
Companies where asked
А-стор
Answer from AI
sobes.tech AI
Системный вызов lseek используется для изменения текущей позиции чтения/записи в открытом файловом дескрипторе. Это позволяет перемещаться по файлу, устанавливая указатель на определённую позицию, откуда последующие операции чтения или записи будут выполняться.
Пример использования lseek в C:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main() {
int fd = open("file.txt", O_RDONLY);
if (fd == -1) {
perror("open");
return 1;
}
// Переместить указатель на 10 байт от начала файла
off_t offset = lseek(fd, 10, SEEK_SET);
if (offset == -1) {
perror("lseek");
close(fd);
return 1;
}
char buffer[20];
ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
if (bytesRead == -1) {
perror("read");
} else {
write(STDOUT_FILENO, buffer, bytesRead);
}
close(fd);
return 0;
}
Таким образом, lseek позволяет произвольно перемещаться по файлу, что полезно для реализации произвольного доступа к данным.