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
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

Linux man-pages 6.03                            4 декабря 2022 г.                                   readahead(2)