---
name: "aio_cancel"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/aio_cancel/3"
---

# aio\_cancel(3)

cancel an outstanding asynchronous I/O request

## NAME

aio\_cancel - cancel an outstanding asynchronous I/O request

## LIBRARY

Real-time library (*librt*, *-lrt*)

## SYNOPSIS

```
#include <aio.h>
```

**int aio\_cancel(int** *fd***, struct aiocb \****aiocbp***);**

## DESCRIPTION

The **aio\_cancel**() function attempts to cancel outstanding asynchronous I/O requests for the file descriptor *fd*. If *aiocbp* is NULL, all such requests are canceled. Otherwise, only the request described by the control block pointed to by *aiocbp* is canceled. (See [**aio**(7)](/aio/7.md) for a description of the *aiocb* structure.)

Normal asynchronous notification occurs for canceled requests (see [**aio**(7)](/aio/7.md) and [**sigevent**(3type)](/sigevent/3type.md)). The request return status ([**aio\_return**(3)](/aio_return/3.md)) is set to -1, and the request error status ([**aio\_error**(3)](/aio_error/3.md)) is set to **ECANCELED**. The control block of requests that cannot be canceled is not changed.

If the request could not be canceled, then it will terminate in the usual way after performing the I/O operation. (In this case, [**aio\_error**(3)](/aio_error/3.md) will return the status **EINPROGRESSS**.)

If *aiocbp* is not NULL, and *fd* differs from the file descriptor with which the asynchronous operation was initiated, unspecified results occur.

Which operations are cancelable is implementation-defined.

## RETURN VALUE

The **aio\_cancel**() function returns one of the following values:

- **AIO\_CANCELED**

  All requests were successfully canceled.

- **AIO\_NOTCANCELED**

  At least one of the requests specified was not canceled because it was in progress. In this case, one may check the status of individual requests using [**aio\_error**(3)](/aio_error/3.md).

- **AIO\_ALLDONE**

  All requests had already been completed before the call.

- \-1

  An error occurred. The error can be found by inspecting *errno*.

## ERRORS

- **EBADF**

  *fd* is not a valid file descriptor.

- **ENOSYS**

  **aio\_cancel**() is not implemented.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **aio\_cancel**() | Thread safety | MT-Safe |

## STANDARDS

POSIX.1-2008.

## HISTORY

glibc 2.1. POSIX.1-2001.

## EXAMPLES

See [**aio**(7)](/aio/7.md).

## SEE ALSO

[**aio\_error**(3)](/aio_error/3.md), [**aio\_fsync**(3)](/aio_fsync/3.md), [**aio\_read**(3)](/aio_read/3.md), [**aio\_return**(3)](/aio_return/3.md), [**aio\_suspend**(3)](/aio_suspend/3.md), [**aio\_write**(3)](/aio_write/3.md), [**lio\_listio**(3)](/lio_listio/3.md), [**aio**(7)](/aio/7.md)
