aiocb数据结构
需要头文件
#include <aiocb.h>
结构定义为
struct aiocb {/* The order of these fields is implementation-dependent */int aio_fildes; /* File descriptor */off_t aio_offset; /* File offset */volatile void *aio_buf; /* Location of buffer */size_t aio_nbytes; /* Length of transfer */int aio_reqprio; /* Request priority */struct sigevent aio_sigevent; /* Notification method */int aio_lio_opcode; /* Operation to be performed;lio_listio() only *//* Various implementation-internal fields not shown */
};
aio_lio_opcode支持以下值
enum { LIO_READ, LIO_WRITE, LIO_NOP };
读写接口
需要头文件
#include <aio.h>
读接口
int aio_read(struct aiocb *aiocbp);
写接口
int aio_write(struct aiocb *aiocbp);
等待处理结果
int aio_suspend(const struct aiocb *const aiocb_list[], int nitems,const struct timespec *restrict timeout);
错误状态
int aio_error(const struct aiocb *aiocbp);
可能的返回 值
返回值 | 说明 |
---|---|
EINPROGRESS | 请求还没有处理完 |
ECANCELED | 请求取消 |
0 | 请求处理成功 |
> 0 | 处理失败 |
返回状态
ssize_t aio_return(struct aiocb *aiocbp);
异步操作完成成功时,才调用。其返回与对应的读写返回字节数
参考资料:
aio