libevent-signal(1)】的更多相关文章

libevent支持io事件,timeout事件,signal事件,这篇文件将分析libevent是如何组织signal事件,以及如何实现signal事件响应的. 1.  sigmap 类似于io事件,event_base有另外一个hash表sigmap用于存储signal事件,hash表使用signal number做数组索引,同一个signal number的不同事件使用双向链表连接(使用struct event结构中的ev_. ev_signal. ev_signal_next成员来构造这…
Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: windows 7 + VS2010 (1)解压libevent到F:\libevent\libevent-2.0.21-stable (2)打开Microsoft visual studio 2010命令行工具 (3)修改以下三个文件,添加宏定义: 在以下3个文件开头添加“#define _WIN32_WINNT 0x0500” libevent-2.0.21-stable\event_io…
http-server例子是libevent提供的一个简单web服务器,实现了对静态网页的处理功能. /* * gcc -g -o http-server http-server.c -levent */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/s…
hello-world是libevent自带的一个例子,这个例子的作用是启动后监听一个端口,对于所有通过这个端口连接上服务器的程序发送一段字符:hello-world,然后关闭连接. /* * gcc -g -o hello-world hello-world.c -levent_core */ #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stri…
signal-test是libevent自带的一个例子,展示了libevent对于信号事件的处理方法. #include <sys/types.h> #include <event2/event-config.h> #include <sys/stat.h> #include <sys/queue.h> #include <unistd.h> #include <sys/time.h> #include <signal.h>…
在libevent中,获取event类型对象的方法有两种,event_assign.event_new 1.event_assign() /** Prepare a new, already-allocated event structure to be added. The function event_assign() prepares the event structure ev to be used in future calls to event_add() and event_del…
http://www.cnblogs.com/luxiaoxun/p/3603399.html Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: windows 7 + VS2010 (1)解压libevent到F:\libevent\libevent-2.0.21-stable (2)打开Microsoft visual studio 2010命令行工具 (3)修改以下三个文件,添加宏定义: 在以下3个文件开头添加“#define _WIN…
libevent源码分析 转自:http://www.cnblogs.com/hustcat/archive/2010/08/31/1814022.html 这两天没事,看了一下Memcached和libevent的源码,做个小总结. 1.入门 1.1.概述Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库.Libevent有几个显著的亮点: (1)事件驱动(event-driven),高性能:(2)轻量级,专注于网络,不如 ACE 那么臃肿庞…
分析libevent的源代码,我的想法的是先分析各种结构体,struct event_base.struct event,然后是event_base_new函数.event_new函数.event_add函数,最后分析event_base_dispatch函数. 一.各种结构体 1.event_base struct event_base { /** Function pointers and other data to describe this event_base's * backend.…
先摘一点网上的介绍 libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能. 接着我们先直接看一个例子,该例子每隔几秒输出一个句子 #include <iostream> #include <even…
事件注册与循环监听 在libevent中为了监听某种事件的发生,设置事件触发后的回调函数,也就是说对该事件注册到当前的IO模型中. 事件注册 事件初始化 使用`event_new`函数来对事件进行初始化. typedef void (*event_callback_fn)(evutil_socket_t, short, void *);/* 回调函数 */ struct event *event_new(struct event_base *base, evutil_socket_t fd, s…
libevent doc example #include <event2/event.h> void cb_func(evutil_socket_t fd, short what, void *arg) { const char *data = arg; printf("Got an event on socket %d:%s%s%s%s [%s]", (int) fd, (what&EV_TIMEOUT) ? " timeout" : &qu…
原文地址: http://blog.csdn.net/sparkliang/article/details/4957667 第一章 1,前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libevent代码和设计思想做系统的.更深层次的分析,写出来,也可供后来者参考. 附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且几乎是无处不函数指针,学习其源代码也需要相当的c语言基础. 2,…
libevent+bufferevent总结 1 学习参考网址 libevent学习网址:http://blog.csdn.net/feitianxuxue/article/details/9372535 http://www.cnblogs.com/hustcat/archive/2010/08/31/1814022.html http://www.cppblog.com/mysileng/archive/2013/02/04/197719.html bufferevent学习网址:http:…
构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作. 有许多解决方案,但事件驱动也被广泛应用到网络编程中.并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序.ftp 服务器程序等.相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率. 这些事件驱动模型中, libevent 库和 libev库能够大大提高性能和事件处理能力.在本文中,我们要讨论在 UNIX/…
libevent简介 libevent是一个事件驱动的网络库,支持跨平台,如Linux, *BSD, MacOS X, Solaris, Windows.支持I/O多路复用,epoll.poll./dev/poll.select.kqueue等. libevnet额外提供了一个缓冲网络I/O的高级框架,支持sockets, filters,rate-limiting, zero-copy file transmission, SSL和 IOCP.libevent还支持DNS,HTTP,RPC.…
文章来自官方文档的部分翻译:http://www.wangafu.net/~nickm/libevent-book/ 通过这部分的了解,基本上可以使用libevent的常用功能了.有时间建议直接看官方文档. 一.简介 1.Libevent组成 1)evutil:抽象各个平台上的网络实现. 2)event and event_base:libevent的核心部分,实现了异步的时间回调机制.可用于监听何时socket可读写,与超时,检测系统信号. 3)bufferevent:libevent事件核心…
http://blog.csdn.net/mafuli007/article/details/7476014 1      简介 主页:http://www.monkey.org/~provos/libevent/. libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制. 编译库代码,编译脚本会判断OS支持哪种类型的事件机制(select.epoll或kqueue),然后条件编译相应代码,…
Libevent 2 提供了 bufferevent 接口,简化了编程的难度,bufferevent 实际上是对底层事件核心的封装,因此学习 bufferevent 的实现是研究 Libevent 底层 event.event_base 用法的一个好办法.本文假定你已经对 Libevent 有一定的认识,否则可以先阅读我关于 Libevent 的介绍: Libevent(1)— 简介.编译.配置 Libevent(2)— event.event_base Libevent(3)— 基础库 Lib…
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <signal.h> #include <event2/event.h> #include <event2/event_struct.h> struct self_tv{ struct event* timeout; struct timeval tv; int order; }; void si…
一直就想用一下libevent库,直到今天才去码代码.用法在他的头文件里面写的很清楚,原理的话也不是很难,感谢作者做的工作! 今天做了几个探索: 实现自定义事件类型的设置与触发 尝试 setInterval 类似的功能 event loop 无限等待loop,直到手动关闭程序 #include <iostream> #include <event2/event.h> #include <event2/util.h> #include <sys/time.h>…
首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-.-(当然,如果想好好用libevent,看看还是很有必要的),还有个Reference,大致就是对各个版本的libevent使用doxgen生成的文档,用来查函数原型和基本用法什么的. 下面的来着文档:http://www.wangafu.net/~nickm/libevent-book Libe…
libevent : 名气最大,应用最广泛,历史悠久的跨平台事件库:libev : 较libevent而言,设计更简练,性能更好,但对Windows支持不够好:libuv : 开发node的过程中需要一个跨平台的事件库,他们首选了libev,但又要支持Windows,故重新封装了一套,*nix下用libev实现,Windows下用IOCP实现: win7上安装: Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: windows 7 + VS2…
转自:http://name5566.com/4198.html 参考文献列表:http://www.wangafu.net/~nickm/libevent-book/ 此文编写的时候,使用到的 Libevent 为 2.0.21.本文略过了关于 event 优先权和超时相关的讨论. 创建和销毁 event_base event_base 是首先需要被创建出来的对象.event_base 结构持有了一个 event 集合.如果 event_base 被设置了使用锁,那么它在多个线程中可以安全的访…
本文转载自: http://blog.csdn.net/liuguanghui1988/article/details/7090531 Libevent的应用主要围绕几大事件:超时事件.信号事件.读/写事件. 下面就一一简单介绍一下它们的使用. 超时事件 示例: /* * Compile with: * gcc time-test time-test.c -o time-test time-test -I/usr/local/include -L/usr/local/lib -levent */…
1. 准备工作 1.1 原材料 libevent-2.0.22-stable 1.2 编译环境 ubuntu-12.04 ndk-r9d 2. 编译步骤 下载解压缩libevent文件 wget http://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gztar -zxf libevent-2.0.22-stable.tar.gz 创建一个event-config.…
之前有一篇文章描述过一些对比: http://www.cnblogs.com/charlesblc/p/6078029.html 这里在代码和应用方面再说一下. 看一下两边的Helloworld基本就了解个大概. libevent的hello world #include <sys/signal.h> #include <event.h> void signal_cb(int fd, short event, void *arg) { event_base *base = (eve…
前段时间对Libevent的源码进行了阅读,现整理如下: 介绍 libevent是一个轻量级的开源高性能事件驱动网络库,是一个典型的Reactor模型.其主要特点有事件驱动,高性能,跨平台,统一事件源等等. 网上关于libevent的源码分析有很多相关博客,本人在学习过程中也是借助了网络.所以,在此,关于libevent中的许多具体实现部分就不做介绍,主要是从相关数据结构层面上去分析.仅供参考. event结构体 libevent中的事件处理类型是event结构类型,event结构体封装了句柄,…
event和event_base是libevent的两个核心结构体,分别是反应堆模式中的Event和Reactor.源码分别位于event.h和event-internal.h中 1.event: struct event { TAILQ_ENTRY (event) ev_next; //I/O事件 TAILQ_ENTRY (event) ev_active_next; //所有激活事件的链表 TAILQ_ENTRY (event) ev_signal_next; //Signal事件 //定时…
/**   我们先来看一下事件的创建*/struct event * event_new(struct event_base *base, evutil_socket_t fd, short events, void (*cb)(evutil_socket_t, short, void *), void *arg) { struct event *ev; ev = mm_malloc(sizeof(struct event)); if (ev == NULL) return (NULL);   …