Документация по LinuxLinuxDoc.Ru 🔍

lseek - устанавливает позицию чтения/записи информации в файле

НАЗВАНИЕ
lseek - устанавливает позицию чтения/записи информации в
файле

СИНТАКСИС
#include
#include

off_t lseek(int fildes, off_t offset, int whence);

ОПИСАНИЕ

Функция lseek устанавливает аргумент файлового описателя
fildes равным offset в соответствии с директивой whence
следующим образом:

SEEK_SET
(смещение offset устанавливается в байтах);

SEEK_CUR
(к текущему значению смещения добавляется offset
байтов);

SEEK_END
(смещение будет равно размеру файла плюс offset
байтов);

(функция lseek позволяет устанавливать позицию файла за
пределами самого файла. Если в дальнейшем будут записаны
данные этого смещения, то чтение в промежутке вернет
последовательность из нулевых байтов).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном завершении lseek возвращает новое смещение в
байтах от начала файла. В противном случае возвращается
значение (off_t)-1 и
переменная errno устанавливается должным образом.

КОДЫ ОШИБОК
EBADF Fildes не является открытым файловым описателем.

ESPIPE Fildes ассоциирован с каналом, сокетом или каналом
FIFO.

EINVAL Whence не имеет разрешенного значения.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, POSIX, BSD 4.3

ОГРАНИЧЕНИЯ
Некоторые устройства не поддерживают изменение позиции в
файле, а стандарт POSIX не указывает, какие устройства
должны поддерживать эту операцию. Ограничения,
специфичные для Linux: использование lseek на устройстве
tty возвращает ESPIPE. Другие системы возвращают
количество записанных символов, используя SEEK_SET для
установки счетчика. Некоторые устройства (например,
/dev/null) не приводят к ошибке ESPIPE, но возвращают
указатель с неопределенным значением.

ЗАМЕЧАНИЯ

Использование слова whence в этом документе не является
корректным с точки зрения английского языка, но
сохраняется в силу исторических причин. При
преобразовании старого кода заменяйте значения whence
следующими макросами:

старое новое
0 SEEK_SET
1 SEEK_CUR
2 SEEK_END
L_SET SEEK_SET
L_INCR SEEK_CUR
L_XTND SEEK_END

SVR1-3 возвращает long вместо off_t, а BSD возвращает int.

Заметим, что описатели файла, соданные dup(2) или fork(2),
разделяют указатель текущего положения в файле, поэтому
поиск по таким файлам будет похож на гонку.
Читать новости Linux в Telegram
Linux - lseek - устанавливает позицию чтения/записи информации в файле
Мы в соцсетях ✉