首页 > 解决方案 > 异步文件IO中io_event.res2参数是什么意思?

问题描述

我在我的项目中使用异步 IO api,我对参数io_event.resio_event.res2

它接缝 res 表示 io 大小,但 res2 的含义是什么。我在文件中找到的评论/usr/include/linux/aio.abi.h无济于事。

如果有人解释这一点并向我们展示一个例子,我会非常感激。

/* read() from /dev/aio returns these structures. */
struct io_event {
        __u64           data;           /* the data field from the iocb */
        __u64           obj;            /* what iocb this event came from */
        __s64           res;            /* result code for this event */
        __s64           res2;           /* secondary result */
};

我的代码如下

size_t nevents = 2;
struct io_event events[nevents];
ret = io_getevents(ioctx, 1, nevents, events, NULL);
if (ret < 0) {
    perror("io_getevents");
    exit(1);
}

for (size_t i=0; i<ret; i++) {
    struct io_event *ev = &events[i];
    printf("Event returned with res=%lld res2=%lld\n", ev->res, ev->res2);
    nevents--;
}

标签: linux

解决方案


res 返回成功 io 操作的大小。如果失败,res 返回负的 errno


推荐阅读