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

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

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

БИБЛИОТЕКА

       Библиотека реального времени (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
              The I/O operations are queued for processing and the call returns immediately.  When  all  of  the
              I/O  operations complete, asynchronous notification occurs, as specified by the sevp argument; see
              sigevent(3type)  for details.  If sevp is NULL, no asynchronous notification occurs.

       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() завершился по другой  причине,  то  ни  одна  из  операций
       ввода-вывода не началась.

АТРИБУТЫ

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

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       glibc 2.1.  POSIX.1-2001.

ПРИМЕЧАНИЯ

       Рекомендуется  обнулять  управляющие  блоки  перед использованием. Управляющие блоки не должны изменяться
       пока выполняются операции ввода-вывода. Нельзя читать или писать в буферные области во  время  выполнения
       операций,  иначе  результат  непредсказуем.  Используемые  области  памяти  должны оставаться корректными
       (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> и 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 г.                                    lio_listio(3)