安装:
ls -al /usr/lib | grep libevent 查看是否已安装——>下载libevent-1.4.13-stable.tar.gz解压——>cd libevent目录——>./configure -prefix=/usr ——>make——>make install——>再次查询
libevent会被安装到/usr/lib下(如果在其他目录下eg:/usr/local/lib/ 需要建立软连接到/usr/lib eg:ln -s /usr/local/bin... /usr/lib...)
卸载:
rpm -e libevent-1.4.13.......
常用函数接口:
A:evbuffer:
//动态分配一个struct evbuffer结构,需要调用evbuffer_free释放内存
struct evbuffer* evbuffer_new(void)
//从 buf 中读出“以 \r, \n, \r\n, \n\r 结尾”的一行,返回的 char * 需要外部负责释放
char * evbuffer_readline(struct evbuffer *buffer)
//往 buf 中放数据
int evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen)
//从 buf 中读取数据
int evbuffer_remove(struct evbuffer *buf, void *data, size_t datlen)
//丢弃 buf 中 n 个数据
void evbuffer_drain(struct evbuffer *buf, size_t len)
//从 fd 读数据到 buf 中
int evbuffer_read(struct evbuffer *buf, int fd, int howmuch)
//将 buf 的数据写到 fd 中
int evbuffer_write(struct evbuffer *buffer, int fd)
//释放buffer所占用的内存
void evbuffer_free(struct evbuffer *buffer)
//移动数据从一个evbuffer到另一个evbuffer\
int evbuffer_add_buffer(struct evbuffer *outbuf, struct evbuffer *inbuf)
//添加一个格式化的字符串到evbuffer尾部
int evbuffer_add_printf(struct evbuffer *buf, const char *fmt, ...)
//添加一个va_list格式的字符串到evbuffer尾部
int evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap)
//查找缓冲区中是否存在指定的字符串what
u_char *evbuffer_find(struct evbuffer *buffer, const u_char *what, size_t len)
//设置回调函数
void evbuffer_setcb(struct evbuffer *buffer, void (*cb)(struct evbuffer *, size_t, size_t, void *),
void *cbarg)
B event
//初始化一个event_base 反应堆实例
struct event_base *event_init(void)
//初始化事件event,注册回调函数和关注事件:ev-event对象;fd-event绑定的句柄;event-关注的事件类型(ev_read|ev_write|ev_signal|ev_timeout);cb-回调函数(有三个参数由even_base传入);arg-传给cb的参数
void event_set(struct event *ev, int fd, short event, void (*cb)(int, short, void *), void *arg)
//把一个定时器事件压入到其对应的反应堆实例
int event_add(struct event *ev, struct timeval *tv)
//从反应堆实例删除事件ev
int event_del(struct event *ev)
//进入event loop 主循环,调用回调处理请求.仅仅出错时才返回
int event_dispatch(void)
// reactor:当底层的select/poll/epoll 探测到有事件的时候,event_loop 是逐个处理所有的事件,
int event_loop(int flags)
//判断ev的event事件是否正在处理
int event_pending(struct event *ev, short event, struct timeval *tv)
//定义的一个宏,判断ev是否被初始化
int event_initialized(struct event *ev)
//事件优先级初始化,必须在第一个event_dispatch前被调用
int event_priority_init(int npriorities)
//显示设置ev优先级
int event_priority_set(struct event *ev, int priority)