libevent

libevent源码分析:event_add、event_del

ぃ、小莉子 提交于 2020-03-14 13:44:09
event_add、event_del两个函数分别是使event生效和失效的,下面就来看一下两个函数的实现。 event_add 1 int 2 event_add(struct event *ev, const struct timeval *tv) 3 { 4 int res; 5 6 if (EVUTIL_FAILURE_CHECK(!ev->ev_base)) { 7 event_warnx("%s: event has no event_base set.", __func__); 8 return -1; 9 } 10 11 EVBASE_ACQUIRE_LOCK(ev->ev_base, th_base_lock); 12 13 res = event_add_nolock_(ev, tv, 0); 14 15 EVBASE_RELEASE_LOCK(ev->ev_base, th_base_lock); 16 17 return (res); 18 } 19 20 /* Implementation function to add an event. Works just like event_add, 21 * except: 1) it requires that we have the lock. 2) if tv_is_absolute is set, 22

Libevent源码分析—event_init()

拜拜、爱过 提交于 2020-03-14 13:43:53
下面开始看初始化event_base结构的相关函数。相关源码位于 event.c event_init() 首先调用event_init()初始化event_base结构体 struct event_base * event_init(void) { struct event_base *base = event_base_new(); //event_init()调用event_base_new() if (base != NULL) current_base = base; return (base); } 我们发现event_init()工作量很少,只是调用event_base_new()函数,所以真正初始化event_base的工作是在event_base_new()函数内完成。 event_base_new() struct event_base * event_base_new(void) //初始化libevent的event_base { int i; struct event_base *base; if ((base = calloc(1, sizeof(struct event_base))) == NULL) //在堆上分配内存存储event_base,所有字段初始化为0 event_err(1, "%s: calloc", __func__); event

honeyd 用于压力测试安装说明

你。 提交于 2020-03-02 16:43:25
honeyd的安装比较麻烦,我在ubuntu上下载之后许多库的版本都不兼容,网上可以查到错误相应的解决方法。这里有一个详细的版本。 首先去官网下载安装包,http://www.honeyd.org/。 tar zxvf honeyd-1.5c.tar.gz   cd honeyd-1.5c   ./configure   出错了:configure: error: libpcap not found   原因是没有安装libpcap包,现在开始安装。   tar zxvf libpcap-1.1.1.tar.gz   cd libpcap-1.1.1   ./configure ;make;make install   安装完libpcap后再回来安装honeyd。   ./configure   又出错了:   checking for dnet-config... no   configure: error: dnet-config not found   缺少libdnet包。   tar zxvf libdnet-1.11.tar.gz   cd libdnet-1.11   ./configure ;make;make install   再回来安装honeyd。   ./configure   出错:   checking for libevent... no  

libevent -bufferevent

大兔子大兔子 提交于 2020-03-01 15:30:48
bufferevent 是在libevent 的reactor的模式里存在的Proactor模式,在event的基础上维护了自己的一个buffer ,我们不再关心数据的读写实际的操作,bufferevent自己实现了缓冲的绑定,当有读数据就绪时,就调用buffer_read 读走数据,或者调用buffer_write 写入给定数据,当出现错误,buffevent有自己的错误处理机制,达到了异步I/O struct bufferevent { struct event_base *ev_base; struct event ev_read; struct event ev_write; struct evbuffer *input;//接收数据缓冲 struct evbuffer *output;//发送数据缓冲 struct event_watermark wm_read; struct event_watermark wm_write; evbuffercb readcb;//读回调函数指针 evbuffercb writecb;//写回调函数指针 everrorcb errorcb;//错误回调函数指针 void *cbarg; int timeout_read; /* in seconds */ int timeout_write; /* in seconds */

buildroot经验

假装没事ソ 提交于 2020-02-25 12:56:09
1、可以运行bulilroot下面的孙可编写的build.sh文件,自动配置和编译 2、如何添加要下载和编译的包?   如要下载和编译libevent, 可以通过make menuconfig, 然后搜索libevent,可以找到其配置路径,然后选上即可 3、交叉工具链配置   在bulidroot下make menuconfig,进入Toolchain, 选中第一行Toolchain type,可以选择采用buildroot生成的toolchain,还是外面已有的toolchain   3、bulidroot下的主要目录作用介绍     1)dl目录:源码包     2)package: 配置文件, 如package/libevent/libevent.mk, 其中有版本号、下载地址;如果需要编译不存在的库文件或者自己的库文件, 可以按照package的           格式新建文件,这样在make menuconfig中也可以选择        4、设置登录密码     1)进入“System configuration”          5、buildroot会重新编译自己的命令集,存在output/host/bin目录下,防止ubuntu系统目录下的版本过高或过低;如果此目录没有,才会去ubuntu系统下查找      来源: https://www.cnblogs

centos7下环境配置

六月ゝ 毕业季﹏ 提交于 2020-02-23 08:46:37
1: 安装memcached   问题:error: libevent is required. If it's already installed, specify its path using –with-libevent=/dir/   安装memcached的configure过程遇到这个问题,但是查看是否已经安装了libevent,你会发现系统已经安装了;但还是报错,这是由于libevent是系统默认安装的,并没有安装相应的开发所用的头文件,因此还要用yum -y install libevent-devel;   参考链接:http://www.wp31.com/1022.html ---------------------------------------- 转载自 http://www.wp31.com/1022.html ---------------------------------------- 查看系统是否已经安装libevent # rpm -qa|grep libevent 如果有,不要高兴,先升级 #yum -y install libevent 测试libevent是不是已经安装成功 #ls -al /usr/lib | grep libevent 可以看到多个已经安装的类包 安装memcached( http://memcached.org/

FastDFS安装与配置(一)

落花浮王杯 提交于 2020-02-20 00:34:14
Linux系统上FastDFS安装与配置 1. 相关依赖配置 1.需要安装 gcc yum install gcc-c++ 2.安装libevent【FastDFS依赖libevent库】 yum -y install libevent 3.安装libfastcommon 1. 将libfastcommonV1.0.7.tar.gz拷贝至/usr/local/下 2. tar -zxvf libfastcommonV1.0.7.tar.gz 3. cd libfastcommon-1.0.7 4. ./make.sh 5. ./make.sh install #将/usr/lib64下的库文件拷贝至/usr/lib下 6. ll /usr/lib64/ 4.安装libevent 1. 将libevent-2.0.15-stable.tar.gz 拷贝至/usr/local/下 2. tar -zxvf libevent-2.0.15-stable.tar.gz 3. cd libevent-2.0.15-stable/ 4. ./configure 5. make && make install 6. ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5 2. tracker编译安装 1.将FastDFS

libevent 初探:手动编译运行安装包下的 sample 示例程序

蹲街弑〆低调 提交于 2020-02-12 22:45:14
一、引言 最近在工作中接触到了 libevent 库,老大想让我用 libevent 做一些网关相关的开发工作。因此,在这个不一样的春节里(肆虐的新冠病毒)我一直在阅读有关 libevent 相关的资料。 学习 libevent 的资料,我选择了最稳妥也是最慢的方法,libevent 的官方教程文档。这个文档大概在 2012 年之后就没有再更新了,国内也有朋友制作成了 pdf 方便大家阅读,我大概看了下,有 126 页之多。这里值得一说的就是,libevent 的官方教程文档还是写的很不错的,内容循序渐进,即使是英文,高中水平应该也是可以很顺畅的阅读的。 libevent 的详细介绍在 libevent 官网(http://libevent.org/) 上都有详细的介绍,实际上也有很多中国的程序员写的博客可以阅读。不过最详细最权威的,还是 libevent 的官方文档。 在 libevent 官网上,你可以看到 libevent 目前维护了 4 个版本: 1.4.x.stable 2.0.x.stable 2.1.x.stable master 其中最新的稳定版本是 2.1.x.stable,master 是开发分支的最新代码,不具有生产使用意义。不过这里使用哪个版本不仅需要跟你的系统有关,还需要考虑其配套使用的 openssl 库的版本限制。 不过废话少说

零起步6-CentOS7.6源码编译安装http轻量级消息队列ucmq

萝らか妹 提交于 2020-02-12 15:27:27
先安装libevent,最新版本号 libevent-2.1.11-stable.tar.gz [root@localhost ~]# ls -al /usr/lib | grep libevent [root@localhost ~]# yum install libtool -y [root@localhost ~]# wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz [root@localhost ~]# cd libevent-2.1.11-stable [root@localhost libevent-2.1.11-stable]# ./configure --prefix=/usr/lib/libevent [root@localhost libevent-2.1.11-stable]# make && make install [root@localhost libevent-2.1.11-stable]# ls -al /usr/lib | grep libevent drwxr-xr-x. 5 root root 43 Feb 11 02:48 libevent

libevent安装及使用

烂漫一生 提交于 2020-02-06 07:57:47
一、安装libevent 官网:http://libevent.org/ 选择最新版本下载,我选择的是libevent-2.0.22-stable.tar.gz,然后安装README文件中描述的方法编译、安装即可。 ./configure make make verify # 可选操作 make install 二、使用libevent 示例1:回显服务器 /******************************************************************************* * File Name : echo.c * Author : zjw * Email : emp3XzA3MjJAMTYzLmNvbQo= (base64 encode) * Create Time : 2015年07月14日 星期二 09时05分37秒 *******************************************************************************/ #include <event.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string