Sobes.tech
Junior — Middle

¿Puede explicar para qué se utiliza la llamada al sistema lseek en un sistema operativo?

sobes.tech AI

Respuesta de la IA

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