libevent的hello world程序
照着例子写了一个简单的libevent hello world代码:
#include <sys/signal.h>
#include <event.h> void signal_cb(int fd, short event, void *arg) {
event_base *base = (event_base*) arg;
timeval delay = {, };
printf("Caught an interrupt signal, exit in 2 sec...\n");
event_base_loopexit(base, &delay);
} void timeout_cb(int fd, short event, void *arg) {
printf("timeout\n");
} int main() {
event_base *base = event_init();
event *signal_event = evsignal_new(base, SIGINT, signal_cb, base);
event_add(signal_event, NULL); timeval tv = {, };
event * timeout_event = evtimer_new(base, timeout_cb, NULL);
event_add(timeout_event, &tv); event_base_dispatch(base); event_free(timeout_event);
event_free(signal_event);
event_base_free(base); }
Makefile的内容:
lhello : lhello.cpp
g++ -o lhello lhello.cpp -levent -L/usr/local/lib -Wl,-rpath=/usr/local/lib
2016.09.28 新加的内容
以下是丰富些的Makefile,其中 $@ 代表目标, $^ 代表所有依赖, $< 代表第一个依赖。
CXX=/opt/compiler/gcc-4.8.2/bin/g++ INCPATH= \
/home/work/.jumbo/include/ DEP_LDFLAGS= \
-L/home/work/.jumbo/lib/ DEP_LDLIBS= \
-levent \
-lpthread TARGET= lhello all : $(TARGET) $(TARGET) : *.cc
$(CXX) -o $@ $^ -I$(INCPATH) $(DEP_LDFLAGS) $(DEP_LDLIBS) .PHONY: all clean
clean :
rm -rf $(TARGET)
运行程序:
$ ./lhello
timeout
^CCaught an interrupt signal, exit in sec...
显示经过1秒,显示timeout,然后Ctrl+C之后,会打印提示,并且等待2秒后退出。
注意,在程序中初始化event使用了两个不同的函数,evsignal_new 和 evtimer_new,其实它们都是定义在 include/event2/event.h中的宏,都是利用event_new这个函数,并且加上不同的参数的:
#define evsignal_new(base, signum, callback, arg) \
event_new((base), (signum), EV_SIGNAL|EV_PERSIST, (callback), (arg)) #define evtimer_new(base, callback, arg) \
event_new((base), -, , (callback), (arg))
libevent的hello world程序的更多相关文章
- socket异步编程--libevent的使用
使用 libevent 和 libev 提高网络应用性能 http://www.ibm.com/developerworks/cn/aix/library/au-libev/ libevent实现ht ...
- Linux企业级开发技术(5)——libevent企业级开发之简介
Libevent是一个用于编写高速可移植非阻塞IO应用的库,它的设计目标是: 可移植性:使用libevent编写的程序应该可以在libevent支持的所有平台上工作.即使没有好的方式进行非阻塞IO,l ...
- [转] socket异步编程--libevent的使用
这篇文章介绍下libevent在socket异步编程中的应用.在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的 ...
- R1:创建Libevent库
原文链接:http://www.wangafu.net/~nickm/libevent-book/Ref1_libsetup.html Setting up the Libevent library ...
- libevent入门(1)
libevent是什么 libevent 库实际上没有更换 select().poll() 或其他机制的基础.而是使用对于每个平台最高效的高性能解决方案在实现外加上一个包 ...
- Libevent源码分析系列【转】
转自:https://www.cnblogs.com/zxiner/p/6919021.html 1.使用libevent库 源码那么多,该怎么分析从哪分析呢?一个好的方法就是先用起来,会用了 ...
- Libevent源码分析系列
1.使用libevent库 源码那么多,该怎么分析从哪分析呢?一个好的方法就是先用起来,会用了,然后去看底层相应的源码,这样比较有条理,自上向下掌握.下面用libevent库写个程序,每隔1秒 ...
- 【传智播客】Libevent学习笔记(五):基本类型和函数
目录 00. 目录 01. 基本类型 1.1 evutil_socket_t类型 1.2 标准类型 1.3 各种兼容性类型 02. 可移植的定时器函数 03. 套接字API兼容性 04. 可移植的字符 ...
- Libevent 学习笔记 (1)——Libevent 2.0安装与简单演示样例
今天開始学习Libevent . Libevent 是开源社区的一款高性能I/O框架库. 主要特点有: 1 跨平台. 2 统一事件源 3 线程安全 4 基于Reactor 今天主要进行了Libeven ...
随机推荐
- [HDU - 5408] CRB and Farm
题意: 给出一个由n个点组成的凸包,以及凸包内的k个点,问是否能够在凸包上选择最多2k个点构造一个新的 凸包,使得新的凸包覆盖原来的k个点. 要求2k个点覆盖原本的k个点,只要对原k个点构造凸包,然后 ...
- select 1 from dual
begin 2018年7月14日15:06:29 select 1 from dual Oracle下的select 1 from dual 今天在看公司代码的时候,发现有这一句SQL: select ...
- IdentityServer4之JWT签名(RSA加密证书)及验签
一.前言 在IdentityServer4中有两种令牌,一个是JWT和Reference Token,在IDS4中默认用的是JWT,那么这两者有什么区别呢? 二.JWT与Reference Token ...
- wpf企业应用之带选项框的TreeView
wpf里面实现层次绑定主要使用HierarchicalDataTemplate,这里主要谈一谈带checkbox的treeview,具体效果见 wpf企业级开发中的几种常见业务场景. 先来看一下我的控 ...
- 【MPI】并行奇偶交换排序
typedef long long __int64; #include "mpi.h" #include <cstdio> #include <algorithm ...
- Codeforces Round #234 (Div. 2) A. Inna and Choose Options 模拟题
A. Inna and Choose Options time limit per test 1 second memory limit per test 256 megabytes input st ...
- wikioi 1014 装箱问题(背包)
题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若 ...
- div模拟selection标签 下拉列表
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 活动(Activity)
一.用Log打印日志 Log.d("HelloWorldActivity", "onCreate execute"); 二.Toast用法 Toast.make ...
- dwr.jar简介
DWR(Direct Web Remotiong)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架, 可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运 ...