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

ИМЯ

       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)