aio_error 或 aio_error64 子例程
aio_error 或 aio_error64 子例程包含 POSIX AIO aio_error 子例程 (如 IEEE std 1003.1-2001中所定义) 和 Legacy AIO aio_error 子例程的信息。
POSIX AIO aio_error 子例程
用途
检索异步 I/O 操作的错误状态。
库
标准 C 库 (libc.a)
语法
#include <aio.h>
int aio_error (aiocbp)
const struct aiocb *aiocbp;
描述
aio_error 子例程返回与 aiocb 结构相关联的错误状态。 此结构由 aiocbp 参数引用。 异步 I/O 操作的错误状态是将由相应的 read, write或 fsync 子例程设置的同步 I/O errno 值。 如果子例程尚未完成,那么错误状态等于 EINPROGRESS。
参数
| 项 | 描述 |
|---|---|
| aiocbp | 指向与 I/O 操作关联的 aiocb 结构。 |
aiocb 结构
int aio_fildes
off_t aio_offset
char *aio_buf
size_t aio_nbytes
int aio_reqprio
struct sigevent aio_sigevent
int aio_lio_opcode执行环境
只能从进程环境调用 aio_error 和 aio_error64 子例程。
返回值
如果异步 I/O 操作已成功完成,那么 aio_error 子例程将返回 0。 如果失败,将返回错误状态 (如 read, write和 fsync 子例程所述)。 如果异步 I/O 操作尚未完成,那么将返回 EINPROGRESS 。
错误代码
| 项 | 描述 |
|---|---|
| EINVAL | aiocbp 参数不引用尚未检索其返回状态的异步操作。 |
旧 AIO aio_error 子例程
用途: 检索异步 I/O 请求的错误状态。
库 (旧 AIO aio_error 子例程)
标准 C 库 (libc.a)
语法 (旧 AIO aio_error 子例程)
描述 (旧 AIO aio_error 子例程)
aio_error 子例程检索与 handle 参数关联的异步请求的错误状态。 错误状态是将由相应 I/O 操作设置的 errno 值。 如果 I/O 操作仍在进行中,那么错误状态为 EINPROG 。
aio_error64 子例程类似于 aio_error 子例程,只是它检索与 aiocb64 控制块关联的错误状态。
#define _AIO_AIX_SOURCE
#include <sys/aio.h>或者,在编译时在命令行上输入:->xlc ... -D_AIO_AIX_SOURCE ... legacy_aio_program.c 参数 (旧 AIO aio_error 子例程)
| 项 | 描述 |
|---|---|
| 句柄 (handle) | 由先前调用 aio_read, aio_read64, aio_write, aio_write64, lio_listio和 aio_listio64 子例程设置的 aio 控制块 (aiocb 或 aiocb64) 结构的句柄字段。 如果传入了随机内存位置,那么将返回随机结果。 |
aiocb 结构
struct aiocb
{
int aio_whence;
off_t aio_offset;
char *aio_buf;
ssize_t aio_return;
int aio_errno;
size_t aio_nbytes;
union {
int reqprio;
struct {
int version:8;
int priority:8;
int cache_hint:16;
} ext;
} aio_u1;
int aio_flag;
int aio_iocpfd;
aio_handle_t aio_handle;
}
#define aio_reqprio aio_u1.reqprio
#define aio_version aio_u1.ext.version
#define aio_priority aio_u1.ext.priority
#define aio_cache_hint aio_u1.ext.cache_hint执行环境 (旧 AIO aio_error 子例程)
只能从进程环境调用 aio_error 和 aio_error64 子例程。
返回值 (旧 AIO aio_error 子例程)
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 指示操作已成功完成。 |
| ECANCELED | 指示由于 aio_cancel 子例程调用而取消了 I/O 请求。 |
| EINPROG | 指示 I/O 请求尚未完成。 aio_read , aio_write和 lio_listio 子例程中描述的 errno 值: 指示操作未成功排队。 例如,如果在调用aio_read子程序时使用了一个不可用的文件描述符,它(aio_read)就会返回-1的值,并将errno全局变量设置为EBADF。 使用不成功的 aio 控制块 (aiocb) 结构的句柄对 aio_error 子例程的后续调用返回 EBADF。 相应 I/O 操作的 errno 值: 指示操作已成功启动,但实际 I/O 操作未成功。 例如,对位于完整文件系统中的文件调用 aio_write 子例程将返回值 0 ,这指示请求已成功排队。 但是,当 I/O 操作完成时 (即,当 aio_error 子例程不再返回 EINPROG时) , aio_error 子例程返回 ENOSPC。 这指示 I/O 失败。 |