Linux C编程之十九(1) libevent基本概念

一、libevent是干什么的

1. 开源的库, 提高开发效率

  • 封装了socket通信
  • 封装了IO多路转接

2. 精简, 专注于网络, 性能高

3. 事件驱动

二、libevent库的安装

1. 官方网站: http://libevent.org

2. 源码包下载:

  • 1.4.x -- 适合源码学习
  • 2.x

3. 源码包的安装

(1)./configure

  • --prefix == /usr/xxxxx
  • 检测安装环境
  • 生成makefile

(2)make

  • 编译源代码
  • 生成一些库 (a. 动态, 静态  b. 可执行程序)

(3)make install

  • 将数据拷贝到对应的目录
  • 如果目录不存在, 创建该目录
  • 默认目录

/usr/local:
          a. /usr/local/include
          b. /usr/local/bin
          c. /usr/local/lib

三、libevent库的使用

  • 编译程序的时候指定 -levent 即可
  • 常用头文件:

a. #include <event2/event.h>
          b. #include <event2/listener.h>

四、示例程序演示

  • hello-world.c
  • 浏览源代码

五、 使用套路

1. 创建一个事件处理框架
    2. 创建一事件
    3. 事件添加到事件处理框架上
    4. 开始事件循环
    5. 释放资源

原文地址:https://www.cnblogs.com/xuejiale/p/10872683.html

时间: 2024-10-09 04:52:03

Linux C编程之十九(1) libevent基本概念的相关文章

Linux常用命令(二十九) - date

在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数]... [+格式] 2.命令功能: date 可以用来显示或设定系统的日期与时间. 3.命令参数: 必要参数: %H 小时(以00-23来表示). %I 小时(以01-12来表示). %K 小时(以0-23来表示). %l 小时(以0-12来表示). %M 分钟(以00-59来表示). %P AM

Linux学习笔记(十九)文件压缩

一.常见的压缩文件 Windows .rar .zip .7z Linux .zip,.gz,.bz2,.xz,.tar.gz,.tar.bz2,.tar.xz文件压缩可以节省内存,也可以节省传输速度 二.gzip首先创建了一个文件夹 /tmp/d6z/找了些比较大的文件写入1.txt例如find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \ :多执行几次 gzip 1.txt 就可以将文件1.txt压缩并且删除源文

鸟哥的Linux私房菜——第十九章:例行命令的建立

视频链接: 1. 什么是例行性命令 (分为两种,一种是周期性的,一种是突发性的)1.1 Linux 工作排程的种类: at, cron   ( at是突发的,cron是周期的)1.2 系统上常见的例行性命令有哪些? (log rotate,数据库rpm,locate数据库)2. 仅执行一次的工作排程: at, atq, atrm3. 循环执行的例行性命令: cron3.1 使用者的设定: crontab3.2 系统的设定: /etc/crontab at  仅进行一次的工程安排 这个现在好多都是

Linux 网络编程详解九

TCP/IP协议中SIGPIPE信号产生原因 1.假设客户端socket套接字close(),会给服务器发送字节段FIN: 2.服务器接收到FIN,但是没有调用close(),因为socket有缓存区,所以服务器仍然可以向客户端发送数据. 3.如果这种状态下服务器向客户端发送数据,将会引起TCP/IP协议进行RST段重置,导致服务器向当前进程发送SIGPIPE信号, SIGPIPE信号的默认动作是关闭当前进程. 所以在网络编程中必须要捕捉SIGPIPE信号,因为不确定哪个端会突然close().

linux学习笔记-第十九课-LAMP之php 与 mysql 配置(三)

一.php 编译完的php,配置文件为空,我们需要将php的配置文件(php.ini)从解压的源码包中的php.ini-development(开发调试模板)和php.ini-production(生产运行模板)中复制一份到php的配置目录中,且名字改为php.ini 1 )disable_functions 配置 默认为空,修改为 disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passt

linux学习笔记-第十九课-LAMP之网站搭建(二)

一.网站搭建前提 搭建好LAMP运行环境 下载网站程序,这里以Discuz X 3.2 作为示例 Discuz 程序下载地址:    简体中文GBK http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip    繁体中文BIG5 http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_TC_BIG5.zip    简体UTF-8 http://download.comsenz.c

Linux学习笔记&lt;二十九&gt;——http服务

基础概念: HTTP:Hyper Text Transfer Protocol 超文本传输协议 versions: HTTP/0.9:只接收GET一种请求方法,只支持纯文本 HTTP/1.0:支持PUT.POST.DELETE和HEAD,支持MINE HTTP/1.1:在HTTP/1.0的基础上,增加了缓存功能,支持长连接,支持管道方式同时                  发送多个请求 HTTP请求方法:获取资源的方法 HTTP/0.9:GET HTTP/1.0:PUT(修改服务器上的内容),

linux学习笔记-第十九课-LAMP之 mysql (四)

mysql日常操作指令 1 )mysql管理员密码的更改,mysql安装完毕后,管理员root的密码默认为空,需要进行修改 格式 :mysqladmin -u root password '新密码' 示例 : [[email protected] ~]# mysqladmin -u root password '123456' [[email protected] ~]# mysql -u root -p # 这时候就需要使用密码登陆mysql Enter password:          

Linux学习(二十九)iptables(三)nat表的应用

需求 A机器可以访问外网,B机器和A机器处于同一个内网,现在要让B机器通过A机器访问外网. 步骤 1.为虚拟机添加一块网卡. 如果没有区段名称的话,点击'LAN区段(S)...'按钮,新建一个. 2.ifconfig -a命令可以看到刚添加进来的尚未启用的网卡: [[email protected] ~]# ifconfig -a eth1 Link encap:Ethernet HWaddr 00:0C:29:AC:CC:56 inet addr:192.168.182.130 Bcast:1