Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       readahead - включает упреждающее чтение файла в кэш страниц

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #define _GNU_SOURCE             /* Смотрите feature_test_macros(7) */
       #include <fcntl.h>

       ssize_t readahead(int fd, off64_t offset, size_t count);

ОПИСАНИЕ

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

       Аргумент fd — это файловый дескриптор файла  для  чтения.  В  аргументе  offset  указывает
       начальная  точка,  от  которой  нужно читать данные и в count задаётся количество читаемых
       байт. Ввод-вывод выполняется во все страницы, так  что  offset  эффективно  округляется  в
       меньшую сторону к границе страницы и байты читаются до границы следующей страницы, большей
       или равной (offset+count). Вызов readahead() не выполняет чтения за концом файла. Файловое
       смещение  открытого  файлового  описания,  на  который  указывает  файловый дескриптор fd,
       остаётся неизменным.

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

       On success, readahead()  returns 0; on failure, -1 is returned, with errno set to indicate
       the error.

ОШИБКИ

       EBADF  fd не является допустимым файловым дескриптором или не открыт на чтение.

       EINVAL fd указывает на файл с типом, который нельзя использовать в readahead().

ВЕРСИИ

       The  readahead()   system  call  appeared in Linux 2.4.13; glibc support has been provided
       since glibc 2.3.

СТАНДАРТЫ

       Системный вызов readahead() есть только в Linux, и не должен использоваться в  переносимых
       приложениях.

ЗАМЕЧАНИЯ

       На  некоторых  32-битных архитектурах интерфейс системного вызова отличается от описанного
       выше, по причинам указанным в syscall(2).

ДЕФЕКТЫ

       Вызов readahead() пытается запланировать чтение в  фоновом  режиме  и  сразу  завершается.
       Однако,  он может заблокироваться на время чтения метаданных файловой системы, необходимых
       для обнаружения запрашиваемых блоков. Это часто происходит  ext[234] для больших файлов, у
       которых используются косвенные (indirect) блоки вместо непрерывных (extents), что приводит
       к блокировке вызова на время прочтения нужных данных.

СМ. ТАКЖЕ

       lseek(2), madvise(2), mmap(2), posix_fadvise(2), read(2)

ПЕРЕВОД

       Русский перевод этой страницы руководства был сделан aereiae  <aereiae@gmail.com>,  Azamat
       Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova
       <blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov  <yuray@komyakino.ru>,
       Баринов Владимир и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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