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

ИМЯ
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)