Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #define _GNU_SOURCE             /* See feature_test_macros(7) */
       #define _FILE_OFFSET_BITS 64
       #include <fcntl.h>

       ssize_t readahead(int fd, off_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().

ВЕРСИИ

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

СТАНДАРТЫ

       Linux.

ИСТОРИЯ

       Linux 2.4.13, glibc 2.3.

ПРИМЕЧАНИЯ

       _FILE_OFFSET_BITS should be defined to be 64 in code that uses a pointer to readahead,  if  the  code  is
       intended  to  be  portable to traditional 32-bit x86 and ARM platforms where off_t's width defaults to 32
       bits.

ОШИБКИ

       Вызов 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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                     readahead(2)