io_cancel - отменяет
ожидающий
асинхронный
запрос
ввода-вывода
Real-time library (
librt,
-lrt)
#include <aio.h>
int aio_cancel(int fd, struct aiocb *aiocbp);
Функция
aio_cancel()
пытается
отменить
ожидающие
асинхронные
запросы
ввода-вывода
для
файлового
дескриптора
fd. Если
значение
aiocbp
равно NULL, то
отменяются
все
запросы. В
противном
случае,
отменяется
только
запрос,
описанный
в
управляющем
блоке, на
который
указывает
значение
aiocbp
(описание
структуры
aiocb смотрите
в
aio(7)).
При отмене
запроса
посылаются
обычные
асинхронные
уведомления
(смотрите
aio(7) и
sigevent(7)).
Запрос
возвращает
состояние (
aio_return(3)) равное -1,
а
состояние
ошибки (
aio_error(3))
устанавливается
в
ECANCELED.
Управляющие
блоки
запросов,
которые не
могут быть
отменены,
не
изменяются.
Если
запрос не
может быть
отменён, то
он
завершается
как обычно
после
выполнения
операции
ввода-вывода
(в этом
случае
aio_error(3)
вернёт
состояние
EINPROGRESSS).
В случае,
если
значение
aiocbp
не равно NULL и
fd
отличается
от
файлового
дескриптора,
для
которого
создавалась
асинхронная
операция,
то
поведение
непредсказуемо.
Список
операций,
которые
можно
отменять,
зависит от
реализации.
Функция
aio_cancel()
возвращает
одно из
следующих
значений:
- AIO_CANCELED
- Все
запросы
успешно
отменены.
- AIO_NOTCANCELED
- Как
минимум,
один
указанный
запрос не
отменён,
так как он
находится
в
состоянии
выполнения.
В этом
случае
можно
проверить
состояние
каждого
запроса с
помощью
aio_error(3).
- AIO_ALLDONE
- Все
запросы
выполнены
ещё до
вызова.
- -1
- Произошла
ошибка.
Значение
ошибки
можно
узнать из
errno.
- EBADF
- Значение
fd не
является
правильным
файловым
дескриптором.
- ENOSYS
- Функция
aio_cancel() не
реализована.
Функция
aio_cancel()
доступна в
glibc начиная с
версии 2.1.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
aio_cancel() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
Смотрите
aio(7).
aio_error(3),
aio_fsync(3),
aio_read(3),
aio_return(3),
aio_suspend(3),
aio_write(3),
lio_listio(3),
aio(7)
Русский
перевод
этой
страницы
руководства
был сделан
Dmitry Bolkhovskikh <
[email protected]> и Yuri Kozlov
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]