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

ИМЯ
aio_read - асинхронное чтение
LIBRARY
Real-time library (librt, -lrt)
СИНТАКСИС
#include <aio.h>
int aio_read(struct aiocb *aiocbp);
ОПИСАНИЕ
Функция aio_read() ставит в очередь запрос ввода-вывода, описанный в буфере, на который указывает aiocbp.
Эта функция является асинхронным аналогом вызова read(2). Аргументы функции
read(fd, buf, count)
соответствуют (в указанном порядке) полям aio_fildes, aio_buf и aio_nbytes структуры, на которую
указывает aiocbp (описание структуры aiocb смотрите в aio(7)).
Чтение данных выполняется начиная с абсолютного положения в файле aiocbp->aio_offset, независимо от
смещения в файле. После вызова значение смещения в файле не определено.
Прилагательное «асинхронный» означает, что вызов возвращает управление сразу после установки запроса в
очередь; при завершении вызова чтение может уже выполнится, а может и нет. Для проверки выполнения чтения
используйте aio_error(3). Состояние возврата завершённой операции ввода-вывода можно получить с помощью
aio_return(3). Асинхронное уведомление о выполнении ввода-вывода можно получить, установив
aiocbp->aio_sigevent соответствующим образом; подробней смотрите в sigevent(7).
Если определён макрос _POSIX_PRIORITIZED_IO и данный файл его поддерживает, асинхронная операция
устанавливается в очередь с приоритетом вызывающего процесса минус aiocbp->aio_reqprio.
Поле aiocbp->aio_lio_opcode игнорируется.
Данные не читаются из обычного файла, если смещение превышает максимум.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
On success, 0 is returned. On error, the request is not enqueued, -1 is returned, and errno is set to
indicate the error. If an error is detected only later, it will be reported via aio_return(3) (returns
status -1) and aio_error(3) (error status—whatever one would have gotten in errno, such as EBADF).
ОШИБКИ
EAGAIN Не хватает ресурсов.
EBADF Значение aio_fildes не является допустимым файловым дескриптором для открытия на чтение.
EINVAL Одно или несколько значений у aio_offset, aio_reqprio или aio_nbytes неверны.
ENOSYS Функция aio_read() не реализована.
EOVERFLOW
Файл является обычным файлом, мы начинаем читать его до конца файла и хотим получить не менее
одного байта, но начальная позиция находится за максимальным значением смещения этого файла.
ВЕРСИИ
Функция aio_read() доступна в glibc начиная с версии 2.1.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
│ Интерфейс │ Атрибут │ Значение │
├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
│ aio_read() │ Безвредность в нитях │ MT-Safe │
└─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘
СТАНДАРТЫ
POSIX.1-2001, POSIX.1-2008.
ЗАМЕЧАНИЯ
Желательно обнулять буфер блока управления перед использованием. Блок управления не должен изменяться во
время выполнения операции чтения. Область буфера, в которую выполняется чтение, должна быть недоступна во
время операции, иначе поведение непредсказуемо. Области памяти, с которыми производится работа, должны
оставаться доступными.
Одновременное выполнение операций ввода-вывода через совместно используемую структуру aiocb приводит к
непредсказуемым результатам.
ПРИМЕРЫ
Смотрите aio(7).
СМ. ТАКЖЕ
aio_cancel(3), aio_error(3), aio_fsync(3), aio_return(3), aio_suspend(3), aio_write(3), lio_listio(3),
aio(7)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Dmitry Bolkhovskikh <d20052005@yandex.ru> и Yuri
Kozlov <yuray@komyakino.ru>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03 5 февраля 2023 г. aio_read(3)