libev的用法
本例是以linux环境c++的用法,ide用的是vs2019
一、libev的安装
我们采用的是apt-get方法(偷懒^_^),你也可以采用源码方式安装
sudo apt-get install libev-dev
二、vs 2019的库引入

我们在这里引入libev,curl和glib库,对就命令编译的格式为
g++ main.cpp -o main -lev -lcurl -lglib-2.0 -L/usr/include/glib-2.0 -L/usr/lib/aarch64-linux-gnu/glib-2.0/include/

三、使用说明
1.引入ev.h
2.初始化libev
struct ev_loop* loop;
loop = EV_DEFAULT;
3.添加监听
io监听
/**读取监听**/
ev_io_init(&socket_read_watcher, socket_read_action, fd, EV_READ);
ev_io_start(loop, &socket_read_watcher);
信号中断监听
/**系统信号监听**/
ev_signal_init(&signal_watcher, signal_action, SIGINT);
ev_signal_start(loop, &signal_watcher);
定时任务
/**心跳监听部分start**/
ev_timer_init(&socket_time_heart_watcher, socket_heart_watcher, 5.5, 0.);
ev_timer_start(loop, &socket_time_heart_watcher);
启动监听
ev_run(loop, 0);
四、示例Demo
#include <cstdio>
#include <iostream>
#include <time.h>
#include <unistd.h> #include <ev.h> #include "main.h" using namespace std; /**
定时监听
*/
ev_timer socket_time_heart_watcher; /**
socket监听
*/
ev_io socket_read_watcher; /**
信号
*/
ev_signal signal_watcher; struct ev_loop* loop; /*************************************************
Function: // 信号监听
Description: // 信号监听
@main_loop //libev
*************************************************/
void signal_action(struct ev_loop* main_loop, ev_signal* signal_w, int e)
{
cout << "In Signal action" << endl;
} /*************************************************
Function: // SOCKET读监听
Description: // 读监听
@main_loop //libev
*************************************************/
void socket_read_action(EV_P_ ev_io* w, int revents)
{
try
{ }
catch (...)
{ }
} /*************************************************
Function: // SOCKET心跳
Description: // 心跳
@main_loop //libev
*************************************************/
void socket_heart_watcher(EV_P_ ev_timer* timer, int revents)
{
try
{
cout << "i'm heart " << endl; }
catch (...)
{ } timer->repeat = 5.0; ev_timer_again(loop, timer);
} int main(int argc, char* argv[])
{
cout << "start!.....\n" << endl; int i = 0; loop = EV_DEFAULT; /**网络读取监听**/
ev_io_init(&socket_read_watcher, socket_read_action, 0, EV_READ);
ev_io_start(loop, &socket_read_watcher); /**系统信号监听**/
ev_signal_init(&signal_watcher, signal_action, SIGINT);
ev_signal_start(loop, &signal_watcher); /**心跳监听部分start**/
ev_timer_init(&socket_time_heart_watcher, socket_heart_watcher, 5.5, 0.);
ev_timer_start(loop, &socket_time_heart_watcher); ev_run(loop, 0);
return 0;
}
libev的用法的更多相关文章
- libev学习笔记
转 libev的使用--结合Socket编程 作者:cxy450019566 之前自己学过一些libev编程的基础,这次写压测刚好用上了,才算真正动手写了些东西,在这里做一些总结.写这篇文章是为了用浅 ...
- ss-libev 源码解析udp篇 (3)
本篇分析server_recv_cb,这个是udp转发中最重要的函数. server_recv_cb: 当ss-local或ss-server接收到来自前端的udp数据包时调用.这个函数代码比较多,除 ...
- libev学习(一)
一.libev简介 Libev是一个事件循环:你注册感兴趣的特定事件(比如一个文件可以读取时或者发生超时时),它将管理这些事件源,将这些事件反馈给你的程序.为了实现这些,至少要在你的进程(或线程)中执 ...
- 浅析libev的ev_signal过程
ev_signal是libev提供的对信号处理的一个模块,基本上是对sigaction函数的一个封装,并将本身是异步的信号转化为同步.ev_signal的使用十分简单: #include <ev ...
- debian下编译libev库
系统为Linux debian 2.6.32-5-686.这是裸系统,连xwindows都没有.帐户为root,不是的注意一下权限.这里想说明安装过程及出现的问题,故打印的信息较多,以供出现错误的读者 ...
- Socket网络编程--Libev库学习(3)
这一小节继续讲解各个观察器(Watcher). 上一小节已经讲解了ev_io(IO可读可写观察器),ev_stat(文件属性变化观察器),ev_signal(信号处理观察器),ev_timer(定时器 ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
随机推荐
- SQL IsNull函数详解
IsNull,计算机语言函数,意思是返回 Boolean 值,指明表达式是否不包含任何有效数据 (Null). ISNULL 使用指定的替换值替换 NULL. IS NULL经常用于组成一个逻辑表达式 ...
- composer的autoload来自动加载自己编写的函数库与类库?
1.使用命令composer init生成composer.json文件,并编辑autoload选项内容如下: 其中又包含主要的两个选项: files 和 psr-4. files就是需要compos ...
- DWVA-命令注入漏洞闯关(Command Injection)
前言 Vulnerability: Command Injection LOW级别 代码: <?php if( isset( $_POST[ 'Submit' ] ) ) { // 几首一个变量 ...
- 如何使用Camtasia给视频或者图片调色
喜欢摄影过着做视频的朋友一定知道,一张好看的照片或者一段精美视频的构成因素很多,取景本身肯定是个很重要的条件,相机的素质是非常重要的硬件条件,接下来的就是后期的编辑和处理了,而在后期处理过程中调色就显 ...
- FL studio系列教程(十八):FL Studio输出监视面板讲解
在FL Studio编曲制作软件中输出监视器面板主要的功能是监视输出电平和波形以及频谱.下面大家就跟小编一起来认识下什么是FL Studio监视面板以及它的一些特征吧! 1.首先,我们来看一下输出监视 ...
- 「CSP-S 2019」括号树
[题目描述] 传送门 [题解] 是时候讨论一下我在考场上是怎么将这道题写挂的了 初看这道题毫无思路,先看看部分分吧 一条链的情况?设k[i]表示前i个括号的方案数 显然\(k[i]=k[i-1]+\) ...
- csust T1097 “是时候表演真正的技术了” 题解(虚点跑最短路)
题目链接 题目大意 给你n个点m条路,以及k个宝藏点,q次查询要你求出距离这个点最近的宝藏点的距离 题目思路 一个套路题,建立虚点与k个点连一个权值为0的边,跑最短路即可 注意边多了4000条 代码 ...
- H3CNE(教程)
培训机构提供的ppt,可能也是来自于官方提供,涉及到H3CNE认证考试中的全部知识点,学真技术还得看这个.包括帧中继,哪怕是淘汰了十多年了. https://huxiaoyao.lanzous.com ...
- 《应用计算方法教程》matlab作业一
运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: word文档百度云链接: 链接:https://pan.baidu.com/s/ ...
- 【2020.11.28提高组模拟】T2 序列(array)
序列(array) 题目描述 给定一个长为 \(m\) 的序列 \(a\). 有一个长为 \(m\) 的序列 \(b\),需满足 \(0\leq b_i \leq n\),\(\sum_{i=1}^ ...