一、libevent库的安装

Libevent 使用源码安装的方式,源码下载地址:http://libevent.org/
下载下来后,将 Libevent 的压缩包拷贝到 Linux 系统中,然后按照以下步骤执行:

  1. 打开终端,并且进入到 Libevent 所在位置
  2. 利用 tar 命令解压 Libevent 压缩包
  3. 进入到解压开的目录中
  4. 切换到 root 模式下执行命令: ./configuer --prefix=/usr
  5. 使用 make 命令完成编译
  6. 使用 make install 命令完成安装
  7. 使用 ls -al /usr/lib | grep libevent 测试安装是否成功

二、libevent的简介及原理

1. 简介

Libevent 是开源社区的一款高性能的 I/O 框架库,作为一个I/O 框架库,Libevent 具有如下特点:

  1. 跨平台支持。 Libevent 支持 Linux、Unix 和 Windows。
  2. 统一事件源。Libevent 对 I/O 事件、信号和定时事件提供统一的处理。
  3. 线程安全。Libevent 使用 libevent_pthreads 库来提供线程安全支持。
  4. 基于 Reactor 模式的实现。

2. 原理

  • 将要检查的描述符、读写事件、和要处理此描述符的方法交给libevent库,如果检测到此描述符上有读写事件此库就调用处理方法将其处理掉。
  • 基于 Reactor 模式的I/O框架库由如下几个组件构成:
    1. 句柄:也就是文件描述符
    2. 事件多路分发器:对应的I/O函数,elect,poll,epoll等。
    3. 事件处理器:就是要传输到库中处理事件的方法。
    4. Reactor :这是核心,需要有事件循环、注册事件、删除事件等方法。

三、具体使用

1. 示例

此示例所做的事情就是将文件描述符,索要检测的事件,事件处理的方法交给libevent,如果在此文件描述符上检测到了此事件发生,就调用这个方法处理此事件。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
#include<signal.h>
#include<event.h>
#include<sys/time.h>void sig_fun(int fd,short ev,void*arg)
{printf("sig=%d\n",fd);
}
void timeout_cb(int fd,short ev,void*arg)
{printf("time out\n");
}int main()
{struct event_base *base=event_init();//定义一个libevent实例assert(base!=NULL);//struct event *sig_ev=evsignal_new(base,SIGINT,sig_fun,NULL);
struct event *sig_ev=event_new(base,SIGINT,EV_SIGNAL|EV_PERSIST,sig_fun ,NULL);event_add(sig_ev,NULL);struct timeval tv={3,0};struct event *time_ev = evtimer_new(base,timeout_cb,NULL);//定义事件event_add(time_ev,&tv);//添加事件event_base_dispatch(base);//事件循环event_free(sig_ev);event_free(time_ev);event_base_free(base);

2. 对libevent的图解


程序结束的两中情况:

  1. 当I/O函数检测不到事件的时候。
  2. 强制结束程序。

libevent库的安装与使用相关推荐

  1. Linux动态库的下载与配置(以libevent库为例)

    ** Linux动态库的下载与配置 ** 本章以下载.安装.配置libevent库为例(安装libevent的前提是已经成功安装openssl库) 一.libevent的下载 https://libe ...

  2. libevent 源码阅读 Ubuntu下muduo库的安装与使用

    libevent源码分析--代码结构_鱼思故渊的专栏-CSDN博客 LINUX实战:Ubuntu下muduo库的安装与使用 LINUX实战:Ubuntu下muduo库的安装与使用-LINUX入门-维易 ...

  3. linux下使用NetBeans调试libevent库

    1.安装libevent 参考:http://blog.csdn.net/unix21/article/details/8679269 libevent安装在usr/local/libevent下 2 ...

  4. libevent库介绍

    libevent库 1.安装 https://gitee.com/craboy1/libraries/blob/master/libgevent/libgevent.c libevent库介绍 htt ...

  5. 【libevent】libevent库学习总结(一)——基础

    libevent库学习总结(一)--基础 一.基础 1.1. 介绍 Libevent是一个用于开发可伸缩网络服务器的事件通知库.Libevent API提供了一种机制来执行回调函数,当某个特定事件发生 ...

  6. IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版]

    IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置[完整修正实用版] IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin ...

  7. Python+Anaconda中库的安装

    查看Anaconda中的Python的开发环境 (1)conda env list 不同环境中库的安装 方式一:  Pycharm+Anacond安装完成后的Python文件创建以及No module ...

  8. python3.7如何安装库_Python3.7版库的安装以及常用方法(十分简单)

    首先你的python里面必须要有pip,有的话你就可以直接在cmd窗口的python所在主目录下输入pip install "你要安装的库". 下面以 matplotlib为例. ...

  9. 六丶青龙的依赖库+拉库+互助安装及使用教程

    六丶青龙的依赖库+互助安装及使用教程 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装教程 QQ交流:1014549449 --------------点击跳转 青龙 ...

最新文章

  1. ((void *) 0)的含义和void的一些细节
  2. bigdecimal比较是否相等_java基础教程之字符串的介绍,比较重要的一个知识点【四】...
  3. .Net使用RabbitMQ详解
  4. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
  5. 写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);...
  6. pve 不订阅更新_??“吃鸡”体验服已无更新,暗夜危机2.0或将被1款新游代替
  7. 我的asp入门宝典与您分享
  8. 快速学习R语言的经验分享
  9. MySQL 储存过程-原理、语法、函数详细说明
  10. 【Spring-AOP】底层类ProxyConfig,ProxyProcessorSupport分析
  11. 图书馆占座系统(四)
  12. 联想USB键盘功能键驱动问题
  13. 机器学习进阶路上不可错过的 28 个视频
  14. php7 ob get contents,关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
  15. 萝卜小姐的整车第一弹—MCU 软件烧录及升级说明
  16. .netcore3 下Signalr 关于Joson序列化后对象属性变小写的问题
  17. 一生当修炼这十样品质
  18. FILTER的使用与过滤器实现session登录案例
  19. 清华大学 博士后 原来入的计算机科学与技术 现在能入软件工程吗,清华大学软件学院...
  20. 北大软件“软件成分分析与漏洞检测工具”(CoBOT—SCA)正式发布

热门文章

  1. 2014年第五届蓝桥杯决赛Java本科B组试题解析
  2. 数据结构与算法 | 线性表 —— 链表
  3. 开启windows ping端口功能
  4. 《Ember.js实战》——2.3 计算属性
  5. Docker使用场景一
  6. action_mailer_basics
  7. 关于form标题提交的应用技巧(-)
  8. 利用owc生成excel并且显示在页面
  9. 细说Redis分布式锁
  10. 三万字,Spark学习笔记