Прервать асинхронную операцию ввода/вывода
#include <aio.h>int aio_cancel( int fd,struct aiocb *aiocbptr );
NULL
, если нужно отменить все операции для файлового дескриптора.libc
Функция aio_cancel() пытается отменить одну или несколько асинхронных операций ввода/вывода для файлового дескриптора, ожидающих обработки в данный момент.
Для успешно отмененных асинхронных операций ввода/вывода происходит обычное асинхронное уведомление. Если есть запросы, которые нельзя отменить, то при завершении этих запросов выполняется обычный процесс асинхронного завершения.
Статус ошибки, связанный с запрашиваемыми операциями, которые были успешно отменены, устанавливается в ECANCELED
, статус возврата устанавливается в -1
. Функция aio_cancel() не изменяет структуры struct aiocb для запрашиваемых операций, которые не были успешно отменены.
Если aiocbptr не равен NULL
, aio_cancel() игнорирует аргумент fildes и пытается отменить операции ввода/вывода, определяемые блоком управления struct aiocb. Операция не отменяется, если она уже выполняется.
Возвращаемое значение AIO_NOTCANCELED не указывает на состояние любых других операций, упомянутых в вызове aio_cancel(). Для определения их состояния нужно использовать aio_error(). |
POSIX 1003.1 Asynchronous Input/Output
При первом вызове функций aio_*() создается пул потоков, что делает процесс многопоточным, если он не был таковым. Пул потоков не уничтожится до тех пор, пока процесс не завершится.
aio_error(), aio_fsync(), aio_read(), aio_return(), aio_suspend(), aio_write(), struct aiocb
Предыдущий раздел: Описание API системной библиотеки