linux – 使用libevent2处理文件IO的问题

linux – 使用libevent2处理文件IO的问题,第1张

概述我和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, 我和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");

不幸的是它不起作用.我在尝试添加事件时收到此消息:

[warn] Epoll ADD(1) on fd 7 Failed. old events were 0; read change was 1 (add); write change was 0 (none): Operation not permitted
adding file event: Operation not permitted

该文件存在并具有读/写权限.

任何人都知道如何使用libevent处理文件IO?我还想到了缓冲事件,但是在API中只有函数bufferevent_socket_new()在这里不适用.

提前致谢.

解决方法 我需要libevent来阅读有关优先级的许多文件.问题在于epoll不是在解放. Epoll不支持常规Unix文件.

为了解决这个问题,我强迫libevent不要使用epoll:

struct event_config *cfg = event_config_new();event_config_avoID_method(cfg,"epoll");ev_base = event_base_new_with_config(cfg);      event_config_free(cfg);

首选项列表上的下一个方法是poll,它完全支持文件,就像我想要的那样.

谢谢大家的答案.

总结

以上是内存溢出为你收集整理的linux – 使用libevent2处理文件I / O的问题全部内容,希望文章能够帮你解决linux – 使用libevent2处理文件I / O的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1027495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存