Прототип системного вызова
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
Описание системного вызова
Системный вызов lseek предназначен для изменения положения указателя текущей позиции в открытом регулярном файле.
Параметр fd является дескриптором соответствующего файла, т. е. значением, которое вернул системный вызов open().
Параметр offset совместно с параметром whence определяют новое положение указателя текущей позиции следующим образом:
Если значение параметра whence равно SEEK_SET, то новое значение указателя будет составлять offset байт от начала файла. Естественно, что значение offset в этом случае должно быть не отрицательным.
Если значение параметра whence равно SEEK_CUR, то новое значение указателя будет составлять старое значение указателя + offset байт. При этом новое значение указателя не должно стать отрицательным.
- Если значение параметра whence равно SEEK_END, то новое значение указателя будет составлять длина файла + offset байт. При этом новое значение указателя не должно стать отрицательным.
Системный вызов lseek позволяет выставить текущее значение указателя за конец файла (т.е. сделать его большим размера файла). При любой последующей операции записи в этом положении указателя файл будет выглядеть так, как будто возникший промежуток был заполнен нулевыми битами.
Тип данных off_t обычно является синонимом типа long int.
Системный вызов возвращает новое положение указателя текущей позиции в байтах от начала файла при нормальном завершении и значение -1 при возникновении ошибки.