105-Linux_Libevent库的安装与使用

一.Libevent 概述

Libevent 是开源社区的一款高性能的 I/O 框架库,使用 Libevent 的著名案例有:高性能的分布式内存对象缓存软件 memcached,Google 浏览器 Chromium 的 Linux 版本。

1.Libevent的特点

  • 跨平台支持。 Libevent 支持 Linux、Unix 和 Windows。

  • 统一事件源。Libevent 对 I/O 事件、信号和定时事件提供统一的处理。

  • 线程安全。Libevent 使用 libevent_pthreads 库来提供线程安全支持。

  • 基于 Reactor 模式的实现

2.Libevent使用模型

在这里插入图片描述

3.Libevent 支持的事件类型

在这里插入图片描述

二.Libevent的安装

Libevent 使用源码安装的方式,源码下载地址:http://libevent.org/
下载下来后,将 Libevent 的压缩包拷贝到 Linux 系统中,然后按照以下步骤执行:
1、 打开终端,并且进入到 Libevent 所在位置
2、 切换到 root 用户
3、 利用 tar 命令解压 Libevent 压缩包
4、 进入到解压开的目录中
5、 执行命令: ./configuer --prefix=/usr
6、 使用 make 命令完成编译
7、 使用 make install 命令完成安装
8、 使用 ls -al /usr/lib | grep libevent 测试安装是否成功

三.Libevent简单使用实例

编译时要加上Libevent库
gcc -o xxxxxx xxxxxxx -levent

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/time.h>
#include<signal.h>
#include<event.h>
#include<assert.h>

void sig_cb(int fd,short ev,void* arg);
void time_cb(int fd,short ev,void *arg);
int main()
{
    struct event_base * base=event_init();//定义实例
    assert(base!=NULL);

    struct event * sig_ev=evsignal_new(base,SIGINT,sig_cb,NULL);//event_new()
    event_add(sig_ev,NULL);//将事件添加到libevent

    struct timeval tv={5,0};
    struct event * time_ev=evtimer_new(base,time_cb,NULL);//event_new()
    event_add(time_ev,&tv);

    event_base_dispatch(base);//事件循环--死循环
    event_free(sig_ev);
    event_free(time_ev);
    event_base_free(base);
    exit(0);
}

void sig_cb(int fd,short ev,void* arg)
{
    printf("sig=%d\n",fd);//2
}
void time_cb(int fd,short ev,void *arg)
{
    printf("time out\n");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值