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 байт относительно начала, текущего положения или конца файла, в зависимости от значений whence — SEEK_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 |
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта 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 |