【Linux系統程式設計】libevent庫event_base結構體

杨谖之發表於2024-04-10

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 }

執行結果
image

相關文章