安装
从源码安装libevent
教程来源: https://blog.csdn.net/yueni_zhao/article/details/131455743
1、下载libevent源码包
# 下载到 root 目录
cd /root
wget --no-check-certificate https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
2、解压 && 安装 && 编码
# 解压
cd /root
tar -zvxf libevent-2.1.12-stable.tar.gz
# 生成 makefile 文件
cd /root/libevent-2.1.12-stable/
# 这一步是用来生成编译时用的makefile文件,其中,--prefix用来指定 Libevent 的安装目录。输入make进行编译,成功后再输入make install,然后就可以看到 /usr/local/bin/libevent/ 下面已经有文件生成了:
./configure --prefix=/usr/local/bin/libevent/
# 编译
cd /root/libevent-2.1.12-stable/
make
# 安装
cd /root/libevent-2.1.12-stable/
make install
然后进入 /usr/local/bin/libevent 目录,就可以看到,已经生成了 bin、include、lib 三个目录
root@PAw9033927:/usr/local/bin/libevent# cd /usr/local/bin/libevent
root@PAw9033927:/usr/local/bin/libevent# ls
bin include lib
教程
libevent-API调用的基本流程
在使用API之前,我们需要了解这三部分:
- event_base:event_base是一个事件处理的基础结构,它提供了事件循环的基本框架。可以认为它是对select、epoll等函数的封装,以提供跨平台的支持。
- event:event是一个表示某种事件(套接字的读写事件,定时器事件等)的结构体或对象。它保存了事件触发时,回调函数的指针,供event_base调用。事件能被触发的前提时,事件被注册到event_base中,参与循环检查。
- event loop:运行event_base,直到没有任何注册事件。
总的来说:创建event对象后,需要将其添加到一个event_base实例中,以便在事件发生时被正确处理。event_base提供了方法来添加、删除和处理事件。当事件发生时,event_base负责调用与之相关联的回调函数。下面时一个简单的伪代码示例:
// 创建 event_base 实例
struct event_base *base = event_base_new();
// 创建一个读事件
struct event *ev = event_new(base, fd, EV_READ | EV_PERSIST, callback, arg);
// 将事件添加到事件循环中
event_add(ev, NULL);
// 开始事件循环
event_base_dispatch(base);