gpt4 book ai didi

c - libaio : getting event error code

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:36 25 4
gpt4 key购买 nike

linux 中最新的 libaio API (/usr/include/libaio.h) 像这样定义 io_event:

struct io_event {
PADDEDptr(void *data, __pad1);
PADDEDptr(struct iocb *obj, __pad2);
PADDEDul(res, __pad3);
PADDEDul(res2, __pad4);
};

PADDEDul 解析为:

#define PADDEDul(x, y)  unsigned long x; unsigned y

我读过的所有示例都表明,如果“res”为负,则在系统调用期间发生错误并且 res 包含负“errno”变量。我的问题是,如果“res”被声明为 unsigned long long ,它怎么能包含负的 errno 呢?如果“res”不再包含错误代码,我从哪里获取它以用于写入或读取系统调用?

最佳答案

请将 libaio 中的定义与/usr/include/linux/aio_abi.h 中的定义进行比较。你会发现 'res' 和 'res2' 实际上被定义为有符号整数。

为方便起见,这里是 aio_abi.h 的链接:http://kerneldox.com/kdox-linux/dd/db4/aio__abi_8h_source.html

此外,使用 glibc 中的 syscall() 包装内核 AIO API 也是一个可接受的选项。学习这些内核 API 将是一次令人印象深刻且有益的经历。首先,了解 nginx 如何使用它们。

黑客攻击快乐!

关于c - libaio : getting event error code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com