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

ИМЯ

       aio_write - асинхронная запись

LIBRARY

       Real-time library (librt, -lrt)

СИНТАКСИС

       #include <aio.h>

       int aio_write(struct aiocb *aiocbp);

ОПИСАНИЕ

       Функция  aio_write()  ставит в очередь запрос ввода-вывода, описанный в буфере, на который
       указывает aiocbp. Эта функция является асинхронным  аналогом  вызова  write(2).  Аргументы
       функции

           write(fd, buf, count)

       соответствуют  (в  указанном порядке) полям aio_fildes, aio_buf и aio_nbytes структуры, на
       которую указывает aiocbp (описание структуры aiocb смотрите в aio(7)).

       Если флаг O_APPEND не установлен, то данные записываются начиная от абсолютного  положения
       в файле aiocbp->aio_offset, независимо от смещения в файле. Если флаг O_APPEND установлен,
       то данные записываются  в  конец  файла  в  том  порядке,  в  котором  запускались  вызовы
       aio_write(). После вызова значение смещения файла не определено.

       Прилагательное  «асинхронный»  означает,  что  вызов  возвращает  управление  сразу  после
       установки запроса в очередь; при завершении вызова запись может уже выполнится, а может  и
       нет.   Для   проверки  выполнения  чтения  используйте  aio_error(3).  Состояние  возврата
       завершённой операции ввода-вывода можно  получить  с  помощью  aio_return(3).  Асинхронное
       уведомление  о  выполнении  ввода-вывода  можно  получить,  установив aiocbp->aio_sigevent
       соответствующим образом; подробней смотрите в sigevent(7).

       Если определён макрос _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  не  является  правильным  файловым дескриптором, открытым для
              записи.

       EFBIG  Файл является обычным файлом, мы хотим записать не менее одного байта, но начальная
              позиция равна максимальному значению смещения этого файла или превышает его.

       EINVAL Одно или несколько значений у aio_offset, aio_reqprio или aio_nbytes, неверны.

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

ВЕРСИИ

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

АТРИБУТЫ

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

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

СТАНДАРТЫ

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

ЗАМЕЧАНИЯ

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

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

СМ. ТАКЖЕ

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