我使用 libevent2 有一段时间了,但通常我用它来处理网络 I/O(使用套接字)。现在我需要阅读许多不同的文件,所以我也想使用它。我创建了这段代码:
int file = open(filename, O_RDONLY);
struct event *ev_file_read = event_new(ev_base, file, EV_READ | EV_PERSIST, read_file, NULL);
if(event_add(ev_file_read, NULL))
error("adding file event");
不幸的是,它不起作用。尝试添加事件时收到此消息:
[警告] fd 7 上的 Epoll ADD(1) 失败。旧事件为 0;读取更改为 1(添加);写入更改为 0(无):不允许操作添加文件事件:不允许操作
该文件存在并具有读/写权限。
任何人都知道如何使用 libevent 处理文件 IO?我也想过缓冲事件,但在 API 中只有函数 bufferevent_socket_new() 在这里不适用。
提前致谢。