Sobes.tech
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 позволяет произвольно перемещаться по файлу, что полезно для реализации произвольного доступа к данным.