Provided by: manpages-ru_0.98-4_all bug

ИМЯ

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

ОБЗОР

       #include <sys/types.h>
       #include <unistd.h>

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

       EOVERFLOW
              Получившееся в результате смещение не  может  быть  представлено
              типом off_t.

СООТВЕТСТВИЕ СТАНДАРТАМ

       SVr4, POSIX, BSD 4.3

ОГРАНИЧЕНИЯ

       Некоторые  устройства  несовместимы  с  позиционированием,  а  POSIX не
       определяет какие устройства должны его поддерживать.

       Специальные ограничения Linux: при использовании lseek на  терминальных
       устройствах tty возвращается ESPIPE.

ЗАМЕЧАНИЯ

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

       Если  вы будете конвертировать старый код, подставляйте вместо значений
       whence следующие макросы:

        old       new
       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)
       разделяют  указатель  текущей позиции в файле, так что позиционирование
       таких файлов может быть выполнено на тех же условиях.

СМОТРИТЕ ТАКЖЕ

       dup(2), fork(2), open(2), fseek(3)

ПЕРЕВОД

       Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003