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

ИМЯ
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)