#include #include #include #include #include int main(void) { char buf; struct aiocb aio = { .aio_offset = 0, .aio_buf = &buf, .aio_nbytes = 1, .aio_fildes = -1, }; ssize_t nread; aio.aio_fildes = open("/dev/null", O_RDONLY); if (aio.aio_fildes == -1) err(EXIT_FAILURE, "open /dev/null"); if (aio_read(&aio) == -1) err(EXIT_FAILURE, "aio_read"); if (aio_suspend((const struct aiocb *[]){&aio}, 1, NULL) == -1) err(EXIT_FAILURE, "aio_suspend"); if (aio_error(&aio) == -1) err(EXIT_FAILURE, "aio_error"); nread = aio_return(&aio); if (nread == -1) err(EXIT_FAILURE, "aio_return"); printf("read %zu byte%s\n", (size_t)nread, nread == 1 ? "" : "s"); return 0; }