table of contents
- bookworm 4.18.1-1
- bookworm-backports 4.25.1-1~bpo12+1
- testing 4.25.1-1
- unstable 4.25.1-1
readahead(2) | System Calls Manual | readahead(2) |
НАИМЕНОВАНИЕ¶
readahead - включает упреждающее чтение файла в кэш страниц
БИБЛИОТЕКА¶
Стандартная библиотека языка C (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.
ОШИБКИ¶
ВЕРСИИ¶
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), что приводит к блокировке вызова на время прочтения нужных данных.
СМОТРИТЕ ТАКЖЕ¶
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал(и) 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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
4 декабря 2022 г. | Справочные страницы Linux 6.03 |