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的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)