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

ИМЯ

       lio_listio - запускает список запросов ввода-вывода на выполнение

LIBRARY

       Real-time library (librt, -lrt)

СИНТАКСИС

       #include <aio.h>

       int lio_listio(int mode,
                      struct aiocb *restrict const aiocb_list[restrict],
                      int nitems, struct sigevent *restrict sevp);

ОПИСАНИЕ

       Функция   lio_listio()  запускает  на  выполнение  список  операций  ввода-вывода,  описанных  в  массиве
       aiocb_list.

       Значение операции mode может быть одним из следующих:

       LIO_WAIT
              Вызов не завершается до тех пор, пока не будут выполнены все операции. Аргумент sevp игнорируется.

       LIO_NOWAIT
              Операции ввода-вывода ставятся в очередь на обработку и вызов завершается. После  выполнения  всех
              операций ввода-вывода посылается асинхронное уведомление, задаваемое в аргументе sevp; подробности
              смотрите в sigevent(7). Если значение sevp равно NULL, то асинхронные уведомления не посылается.

       The  aiocb_list argument is an array of pointers to aiocb structures that describe I/O operations.  These
       operations are executed in an unspecified order.  The nitems argument specifies the  size  of  the  array
       aiocb_list.  Null pointers in aiocb_list are ignored.

       В каждом управляющем блоке в aiocb_list в поле aio_lio_opcode задаётся выполняемая операция ввода вывода;
       значения:

       LIO_READ
              Выполнить  операцию  чтения.  Операция  ставится  в  очередь  как  вызов  aio_read(3)  с указанным
              управляющим блоком.

       LIO_WRITE
              Выполнить операцию записи.  Операция  ставится  в  очередь  как  вызов  aio_write(3)  с  указанным
              управляющим блоком.

       LIO_NOP
              Игнорировать управляющий блок.

       Остальные  поля  в каждом управляющем блоке имеют то же назначение, что и для aio_read(3) и aio_write(3).
       Поля aio_sigevent в каждом управляющем блоке могут использоваться для указания уведомлений  по  отдельным
       операциям ввода-вывода (смотрите sigevent(7)).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При  значении  mode  равным  LIO_NOWAIT функция lio_listio() возвращает 0, если все операции ввода-вывода
       были поставлены в очередь. В противном случае возвращается -1 и в errno содержится код ошибки.

       При значении mode равным LIO_WAIT функция lio_listio() возвращает 0, если все операции ввода-вывода  были
       выполнены без ошибок. В противном случае возвращается -1 и в errno содержится код ошибки.

       В возвращаемом lio_listio() состоянии предоставляется информация только о самом вызове, а не об отдельных
       операция  ввода-вывода.  Одна  или несколько операций ввода-вывода могут завершиться с ошибкой, но это не
       повлияет на выполнение остальных операций. Состояние отдельный операций ввода-вывода в  aiocb_list  можно
       определить  с  помощью  aio_error(3).  После  завершения  операции  её результат можно получить с помощью
       aio_return(3). Отдельные операции ввода-вывода могут завершиться  с  ошибкой  по  причинам,  описанным  в
       aio_read(3) и aio_write(3).

ОШИБКИ

       Функция lio_listio() может завершиться с ошибкой по следующим причинам:

       EAGAIN Не хватает ресурсов.

       EAGAIN Количество операций ввода-вывода, указанное в nitems, превысило ограничение AIO_MAX.

       EINTR  Значение  mode  равно  LIO_WAIT  и  был  получен  сигнал до завершения всех операций ввода-вывода;
              смотрите signal(7) (это может быть даже один из асинхронных сигналов о завершении ввода-вывода).

       EINVAL Неправильное значение mode, или значение nitems превышает ограничение AIO_LISTIO_MAX.

       EIO    Одна или более операций, указанных в aiocb_list, завершились с ошибкой. Приложение может проверить
              состояние каждой операции с помощью aio_return(3).

       Если вызов lio_listio() завершился с ошибкой EAGAIN, EINTR или EIO, то некоторые операции  из  aiocb_list
       могли  всё  же  начаться.  Если  вызов  lio_listio() завершился по другой причине, то ни одна из операций
       ввода-вывода не началась.

ВЕРСИИ

       Функция lio_listio() доступна в glibc начиная с версии 2.1.

АТРИБУТЫ

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

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

ЗАМЕЧАНИЯ

       Рекомендуется обнулять управляющие блоки перед использованием. Управляющие  блоки  не  должны  изменяться
       пока  выполняются  операции ввода-вывода. Нельзя читать или писать в буферные области во время выполнения
       операций, иначе результат  непредсказуем.  Используемые  области  памяти  должны  оставаться  корректными
       (valid).

       Одновременное  выполнение  операций  ввода-вывода через совместно используемую структуру aiocb приводит к
       непредсказуемым результатам.

СМ. ТАКЖЕ

       aio_cancel(3), aio_error(3), aio_fsync(3), aio_return(3), aio_suspend(3), aio_write(3), aio(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства  был  сделан  Artyom  Kunyov  <artkun@guitarplayer.ru>,  Azamat
       Hackimov   <azamat.hackimov@gmail.com>,   Dmitry   Bolkhovskikh  <d20052005@yandex.ru>,  Katrin  Kutepova
       <blackkatelv@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>  и
       Иван Павлов <pavia00@gmail.com>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

Linux man-pages 6.03                           15 декабря 2022 г.                                  lio_listio(3)