【Linux系统编程】libevent库event_base结构体
libevent库event_base结构体
event_base结构体是event事件处理框架的基础,每个event_base结构体持有一个事件集合,同时通过调用操作系统提供的事件处理接口(如select)对事件进行监控和处理。
基本函数
event_base_new()
函数原型
#include <event.h>
#include <event2/event.h>
struct event_base* event_base_new(void);
函数说明
创建并返回一个event_base结构体。
函数返回值
- 成功返回event_base结构体指针。
- 失败返回nullptr。
event_base_free()
函数原型
#include <event.h>
#include <event2/event.h>
void event_base_free(struct event_base *);
函数说明
释放event_base的内存空间,该函数不会关闭任何文件描述符,也不会释放任何作为回调函数参数传递给event_new
函数的内存空间。
函数参数
struct event_base *
:指向需要释放的event_base
结构体的指针。
event_reinit()
函数原型
#include <event.h>
#include <event2/event.h>
int event_reinit(struct event_base *base);
函数说明
重新初始化event_base
结构体,在多进程环境中,子进程要使用父进程创建的event_base
结构体,需要重新初始化。
函数参数
struct event_base *
:指向需要重新初始化的event_base
结构体的指针。
函数返回值
- 成功返回0。
- 失败返回-1。
event_get_supported_methods()
函数原型
#include <event.h>
#include <event2/event.h>
const char** event_get_supported_methods(void);
函数说明
获取当前环境中,libevent支持的事件通知机制。
函数返回值
- 当前环境中,libevent支持的事件通知机制C字符串数组。
event_base_get_method()
函数原型
#include <event.h>
#include <event2/event.h>
const char* event_base_get_method(const struct event_base *);
函数说明
获取当前event_base结构体中使用的事件通知机制。
函数参数
const struct event_base *
:指向需要获取事件通知机制的event_base
结构体的指针。
函数返回值
- event_base使用的事件通知机制的字符串。
在CentOS 7中查看libevent支持的方法
源码
#include <iostream>
2 #include <cstdlib>
3 #include <cstring>
4 #include <cstdio>
5 #include <event2/event.h>
6 using namespace std;
7
8 int main(int argc, char *argv[]) {
9 const char ** sup_meth = event_get_supported_methods();
10 for (int i = 0; sup_meth[i] != nullptr; i++) {
11 printf("%s\t", sup_meth[i]);
12 }
13 printf("\n");
14
15 event_base *eb = event_base_new();
16 printf("%s\n", event_base_get_method(eb));
17 event_base_free(eb);
18 return 0;
19 }
运行结果