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

ИМЯ

       aio_suspend - ожидает завершения операции ввода-вывода или истечения срока

LIBRARY

       Real-time library (librt, -lrt)

СИНТАКСИС

       #include <aio.h>

       int aio_suspend(const struct aiocb *const aiocb_list[], int nitems,
                       const struct timespec *restrict timeout);

ОПИСАНИЕ

       Функция  aio_suspend()  приостанавливает  выполнение  вызывающей  нити до тех пор, пока не
       случиться одно из следующих событий:

       •  Завершится один или более асинхронных запросов ввода-вывода из списка aiocb_list.

       •  Будет получен сигнал.

       •  Если значение timeout не NULL и истечёт указанный  срок  (описание  структуры  timespec
          смотрите в nanosleep(2)).

       В  аргументе  nitems  задаётся количество элементов в aiocb_list. Каждый элемент в списке,
       который задаётся в aiocb_list, должен быть равен NULL  (игнорируется),  или  указывать  на
       управляющий   блок,  который  создаётся  при  создании  операции  ввода-вывода  с  помощью
       aio_read(3), aio_write(3) или lio_listio(3) (описание структуры aiocb смотрите в aio(7)).

       If CLOCK_MONOTONIC is supported, this clock is used to measure the timeout  interval  (see
       clock_gettime(2)).

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

       Если  функция  завершается  после выполнения запроса ввода-вывода из списка aiocb_list, то
       возвращается 0. В противном случае возвращается -1, а  значением  errno  определяется  тип
       ошибки.

ОШИБКИ

       EAGAIN Истёк период ожидания в вызове до завершения какой-либо операции.

       EINTR  Вызов  завершён  по  сигналу  (возможно по сигналу, который ожидался как завершение
              операции); смотрите signal(7).

       ENOSYS Функция aio_suspend() не реализована.

ВЕРСИИ

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

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │aio_suspend()                                          │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

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

       POSIX doesn't specify the parameters to be restrict; that is specific to glibc.

ЗАМЕЧАНИЯ

       Можно выполнить опрос с не NULL значением timeout, указав нулевой временной интервал.

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

       Чтобы  после  успешного  возврата из aio_suspend() определить, какие операции ввода-вывода
       завершились, используйте aio_error(3) для  проверки  списка  структур  aiocb,  на  который
       указывает aiocb_list.

ДЕФЕКТЫ

       Реализация  aio_suspend()  в  glibc  не  является безопасной для асинхронных сигналов, что
       нарушает требования POSIX.1.

СМ. ТАКЖЕ

       aio_cancel(3),  aio_error(3),  aio_fsync(3),  aio_read(3),  aio_return(3),   aio_write(3),
       lio_listio(3), aio(7), time(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⟩.