libevent(一):简单使用
来源:互联网 发布:163邮箱smtp ssl 端口 编辑:程序博客网 时间:2024/05/19 21:17
libevent是一个跨平台的,事件驱动框架,支持文件描述符,定时器,信号;
一.安装
libevent官网下载当前最新的版本libevent-2.0.22-stable.tar.gz;
tar -xvf libevent-2.0.22-stable.tar.gz;cd cd libevent-2.0.22-stable./configure --prefix=/mydirmakemake install
安装完后,可以看到安装后的额目录结构如下:
mydir├── bin│ └── event_rpcgen.py├── include│ ├── evdns.h│ ├── event2│ │ ├── buffer_compat.h│ │ ├── bufferevent_compat.h│ │ ├── bufferevent.h│ │ ├── bufferevent_ssl.h│ │ ├── bufferevent_struct.h│ │ ├── buffer.h│ │ ├── dns_compat.h│ │ ├── dns.h│ │ ├── dns_struct.h│ │ ├── event_compat.h│ │ ├── event-config.h│ │ ├── event.h│ │ ├── event_struct.h│ │ ├── http_compat.h│ │ ├── http.h│ │ ├── http_struct.h│ │ ├── keyvalq_struct.h│ │ ├── listener.h│ │ ├── rpc_compat.h│ │ ├── rpc.h│ │ ├── rpc_struct.h│ │ ├── tag_compat.h│ │ ├── tag.h│ │ ├── thread.h│ │ └── util.h│ ├── event.h│ ├── evhttp.h│ ├── evrpc.h│ └── evutil.h├── lib│ ├── libevent-2.0.so.5 -> libevent-2.0.so.5.1.9│ ├── libevent-2.0.so.5.1.9│ ├── libevent.a│ ├── libevent_core-2.0.so.5 -> libevent_core-2.0.so.5.1.9│ ├── libevent_core-2.0.so.5.1.9│ ├── libevent_core.a│ ├── libevent_core.la│ ├── libevent_core.so -> libevent_core-2.0.so.5.1.9│ ├── libevent_extra-2.0.so.5 -> libevent_extra-2.0.so.5.1.9│ ├── libevent_extra-2.0.so.5.1.9│ ├── libevent_extra.a│ ├── libevent_extra.la│ ├── libevent_extra.so -> libevent_extra-2.0.so.5.1.9│ ├── libevent.la│ ├── libevent_openssl-2.0.so.5 -> libevent_openssl-2.0.so.5.1.9│ ├── libevent_openssl-2.0.so.5.1.9│ ├── libevent_openssl.a│ ├── libevent_openssl.la│ ├── libevent_openssl.so -> libevent_openssl-2.0.so.5.1.9│ ├── libevent_pthreads-2.0.so.5 -> libevent_pthreads-2.0.so.5.1.9│ ├── libevent_pthreads-2.0.so.5.1.9│ ├── libevent_pthreads.a│ ├── libevent_pthreads.la│ ├── libevent_pthreads.so -> libevent_pthreads-2.0.so.5.1.9│ ├── libevent.so -> libevent-2.0.so.5.1.9│ └── pkgconfig│ ├── libevent_openssl.pc│ ├── libevent.pc│ └── libevent_pthreads.pc└── local ├── include │ └── hiredis │ ├── adapters │ │ ├── ae.h │ │ ├── glib.h │ │ ├── ivykis.h │ │ ├── libevent.h │ │ ├── libev.h │ │ ├── libuv.h │ │ ├── macosx.h │ │ └── qt.h │ ├── async.h │ ├── hiredis.h │ ├── read.h │ └── sds.h └── lib ├── libhiredis.a ├── libhiredis.so -> libhiredis.so.0.13 ├── libhiredis.so.0.13 └── pkgconfig └── hiredis.pc
二.使用
2.1 定时器和信号 test_event.c:
#include<stdio.h>#include<signal.h>#include<event2/event.h>void onTime(int fd, short event, void* arg){ struct timeval tv; tv.tv_sec = 10; tv.tv_usec = 0; printf("onTime called ! \n"); event_add( *(struct event**)arg, &tv);}void onSigusr1(int sig, short event, void* arg){ printf("recieve sig %d \n", sig);}int main(){ struct event_base* base = NULL; struct event* timer = NULL; struct timeval tv; struct event* esig = NULL; base = event_base_new(); if(!base){ printf("event_base_new() failed !\n"); } //增加定时器 timer = evtimer_new(base, onTime, &timer); tv.tv_sec = 10; tv.tv_usec = 0; event_add(timer, &tv); //增加信号监听 esig = evsignal_new(base, SIGUSR1, onSigusr1, NULL); event_add(esig, NULL); event_base_dispatch(base); return 0;}
makefile
all:test_event.c gcc -o test_event test_event.c -I/mydir/include -L/mydir/lib -levent
运行结果 , (中间向进程发了一次SIGUSR1信号):
./test_event onTime called ! onTime called ! recieve sig 10 onTime called !
2.2 socket
参考Example: A low-level ROT13 server with Libevent
1 0
- libevent(一):简单使用
- (一)libevent安装及简单的使用
- libevent简单使用
- libevent简单使用小结
- libevent服务端编程简单使用
- libevent中evbuffer简单使用
- libevent使用的简单案例
- 学习使用libevent(一)
- libevent使用(一)-----基础配置
- 深入浅出libevent的使用(一)
- 简单的html静态网页使用libevent
- 使用libevent编写linux服务(一)
- 使用libevent编写linux服务(一)
- Libevent学习笔记(一):基本使用
- libevent使用
- libevent使用
- 使用Libevent
- libevent使用
- sroloCtroS.75
- usaco 1.4 clocks 2008.11.5
- VS2010 C++环境下DLL和LIB文件目录及名称修改
- Chinese Mahjong
- 轻量级分布式 RPC 框架
- libevent(一):简单使用
- usaco1.2 transform 2008.11.5
- bootstraps4+flexbox
- poj3666Making the Grade【dp离散化】
- usaco1.2 namenum 2008.11.5
- Android实现推送方式解决方案
- word2vec词向量训练及中文文本相似度计算
- HDU 1251 统计难题(字典树)
- usaco1.2 palsquare 2008.11.5