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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.