Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       aio_read - асинхронное чтение

БИБЛИОТЕКА

       Библиотека реального времени (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,  независимо  от
       смещения в файле. После вызова значение смещения в файле не определено.

       The "asynchronous" means that this call returns as soon as the request has been enqueued; the read may or
       may  not  have completed when the call returns.  One tests for completion using aio_error(3).  The return
       status of a completed I/O operation can be obtained by aio_return(3).  Asynchronous notification  of  I/O
       completion  can  be  obtained  by  setting  aiocbp->aio_sigevent  appropriately; see sigevent(3type)  for
       details.

       Если определён  макрос  _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
              Файл  является  обычным  файлом,  мы  начинаем читать его до конца файла и хотим получить не менее
              одного байта, но начальная позиция находится за максимальным значением смещения этого файла.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ aio_read()                                                          │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       glibc 2.1.  POSIX.1-2001.

ПРИМЕЧАНИЯ

       Желательно обнулять буфер блока управления перед использованием. Блок управления не должен изменяться  во
       время выполнения операции чтения. Область буфера, в которую выполняется чтение, должна быть недоступна во
       время  операции,  иначе  поведение непредсказуемо. Области памяти, с которыми производится работа, должны
       оставаться доступными.

       Одновременное выполнение операций ввода-вывода через совместно используемую структуру  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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                      aio_read(3)