Scroll to navigation

LSEEK64(3) Руководство программиста Linux LSEEK64(3)

ИМЯ

lseek64 - изменяет смещение в файле, используемое при чтении/записи, в соответствии с 64-битным значением

СИНТАКСИС

#define _LARGEFILE64_SOURCE /* См. feature_test_macros(7) */
#include <sys/types.h>
#include <unistd.h>

off64_t lseek64(int fd, off64_t offset, int whence);

ОПИСАНИЕ

Семейство вызовов lseek(2) изменяет смещение в открытом файле, с которым связан файловый дескриптор fd, на offset байт относительно начала, текущего положения или конца файла, в зависимости от значений whenceSEEK_SET, SEEK_CUR, или SEEK_END, соответственно.

Подробности, возвращаемое значение и ошибки смотрите в lseek(2).

Доступно четыре интерфейса: lseek(2), lseek64(), llseek(2) и _llseek(2).

lseek()

Прототип:


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

В lseek(2) используется тип off_t, который в 32-битной системе является 32-битным знаковым типом, если только при компиляция не определён макрос


#define _FILE_OFFSET_BITS 64

в этом случае он будет 64-битным знаковым типом.

lseek64()

Прототип:


off64_t lseek64(int fd, off64_t offset, int whence);

В библиотечной функции lseek64() используется 64-битный тип, даже если off_t является 32-битным типом. Её прототип (и тип off64_t) доступен только когда при компиляции определён макрос


#define _LARGEFILE64_SOURCE

Функция lseek64() доступна начиная с glibc 2.1 и определена как псевдоним llseek().

llseek()

Прототип:


loff_t llseek(int fd, loff_t offset, int whence);

Тип loff_t является 64-битным знаковым типом. Библиотечная функция llseek() доступна в glibc и работает без каких-либо дополнительных определений. Однако в glibc для неё нет прототипа. Пользователи должны добавить указанный выше прототип или его эквивалент в свой исходный код. Когда пользователи стали жаловаться на потерю данных, вызванную неправильной компиляцией e2fsck(8), в glibc 2.1.3 добавили предупреждение времени компоновки.


"the `llseek´ function may be dangerous; use `lseek64´ instead."

Это делает данную бесполезной в случае, если кто-то захочет избавиться от предупреждения.

_llseek()

На 32-битных архитектурах данный системный вызов используется для реализации перечисленных выше функций. Прототип:


int _llseek(int fd, off_t offset_hi, off_t offset_lo,
            loff_t *result, int whence);

Подробную информацию смотрите в llseek(2).

На 64-битных архитектурах системный вызов _llseek() не требуется. Вместо него в них используется системный вызов lseek(2), поддерживающий 64-битные файловые смещения.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
lseek64() Безвредность в нитях MT-Safe

СМ. ТАКЖЕ

llseek(2), lseek(2)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Artyom Kunyov <artkun@guitarplayer.ru>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

15 сентября 2017 г. Linux