#include <aio.h> int aio_read(struct aiocb *aiocbp); int aio_write(struct aiocb *aiocbp); int aio_error(const struct aiocb *aiocbp); ssize_t aio_return(struct aiocb *aiocbp); int aio_suspend(struct aiocb *list[], int nent, const struct timespec *timeout); int aio_waitn(struct aiocb *list[], uint_t nent, uint_t *nwait, const struct timespec *timeout); int aio_cancel(int fildes, struct aiocb *aiocbp);
aio_read(3RT) と aio_write(3RT) は、概念において pread(2) と pwrite(2) に似ています。ただし、入出力操作のパラメータが、aio_read() または aio_write() に渡される非同期入出力制御ブロック (aiocbp) に格納される点が異なります。
aiocbp->aio_fildes; /* file descriptor */ aiocbp->aio_buf; /* buffer */ aiocbp->aio_nbytes; /* I/O request size */ aiocbp->aio_offset; /* file offset */
さらに、必要に応じて、「struct sigevent」のメンバーで非同期通知タイプ (一般には、待ち行列に入れられたシグナル) を指定することができます。
aiocbp->aio_sigevent; /* notification type */
aio_read() または aio_write() を呼び出すと、入出力操作が開始されます (または、入出力要求が待ち行列に入れられます)。この呼び出しは、ブロックされずに復帰します。
非同期操作の進行中のエラー状態や復帰状態を判定するために、aiocbp の値を aio_error(3RT) および aio_return(3RT) の引数として使用できます。