LSEEK(2)
LSEEK(2)
НАЗВАНИЕ
lseek - передвижение указателя чтения/записи
СИНТАКСИС
long lseek (fildes, offset, whence) int fildes; long offset; int whence;
ОПИСАНИЕ
Аргумент fildes - это дескриптор файла, полученный после выполнения системных вызовов creat, open, dup или fcntl. Системный вызов lseek устанавливает указатель текущей позиции файла, ассоциированного с дескриптором fildes, следующим образом, в зависимости от значения аргумента whence:
Значение указателя устанавливается равным offset байт. |
К текущему значению указателя прибавляется значение offset. |
Значением указателя становится размер файла плюс offset. |
При успешном завершении системного вызова lseek возвращается новое значение указателя текущей позиции (в байтах) относительно начала файла. Отметим, что если fildes является дескриптором файла на удаленном компьютере и значение offset отрицательно, вызов lseek возвращает значение указателя текущей позиции, даже если оно отрицательно.
Системный вызов lseek завершается неудачей и указатель текущей позиции не изменяется, если выполнено хотя бы одно из следующих условий:
[EBADF] Аргумент fildes не является корректным дескриптором открытого файла. [PIPE] Дескриптор файла fildes ассоциирован с каналом. [EINVAL и сигнал SIGSYS] Значение аргумента whence не равно 0, 1 или 2. [EINVAL] Дескриптор fildes не является дескриптором файла, расположенного на удаленном компьютере, и результирующее значение указателя текущей позиции отрицательно.
Некоторые устройства не поддерживают передвижение указателя текущей позиции. Для файлов, ассоциированных с такими устройствами, значение указателя не определено.
СМ. ТАКЖЕ
, , , .
ДИАГНОСТИКА
При успешном завершении результатом служит неотрицательное целое число - указатель текущей позиции в файле; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки