![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Libev
文章平均质量分 58
Libev
橙子砰砰枪
即使盗版书也看的津津有味
展开
-
C-libev学习笔记-事件库源码阅读9-API-ev_loop_fork(),ev_backend(),ev_now_update()
ev_loop_fork()函数声明:/* this needs to be called after fork, to duplicate the loop *//* 这个函数要在fork之后调用,去复制循环*//* when you want to re-use it in the child *//* 当你想去 重用它 在子进程中*//* you can call it in either the parent or the child *//* 你可以调用它在父进程或子进程中,任何时间原创 2021-09-23 15:29:05 · 221 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读8-API-ev_realloc(),ev_now(),ev_loop_destroy()
ev_realloc()函数原型://staticinline_speed void *ev_realloc (void *ptr, long size){ ptr = alloc (ptr, size);//alloc 是函数指针,其将调用 ev_realloc_emul() 函数来申请内存 if (!ptr && size)//申请失败 {#if EV_AVOID_STDIO ev_printerr ("(libev) memory alloca原创 2021-09-21 19:43:25 · 235 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读7-API-ev_default_uc_(),ev_is_default_loop(),ev_loop_new(),ev_malloc(),ev_free()
ev_default_loop_uc_()函数原型://EV_INLINE 用于头文件里的函数,此函数位于ev.hEV_INLINE struct ev_loop *ev_default_loop_uc_ (void) EV_THROW{ extern struct ev_loop *ev_default_loop_ptr; return ev_default_loop_ptr;}该函数返回一个ev_loop类型的指针。ev_is_default_loop(EV_P)函数原型:原创 2021-09-21 10:01:07 · 253 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读6-API-ev_default_loop(),ev_init()
ev_default_loop()声明:EV_API_DECL struct ev_loop *ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_THROW;EV_API_DECL int ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_THROW; /* returns true when successful */作者的注释:/* the default loop is the原创 2021-09-18 17:04:00 · 731 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读5-API-ev_set_allocator(),ev_set_syserr_cb()
ev_set_allocator()函数声明:/* Sets the allocation function to use, works like realloc. * It is used to allocate and free memory. * If it returns zero when memory needs to be allocated, the library might abort * or take some potentially destructive action.原创 2021-09-18 09:52:19 · 202 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读4-API-ev_supported_backends()等,ev_time(),ev_sleep()
上篇文章讲述的两个函数放到linux跑一下试试:int version_major=-1; int version_minor=-1; version_major = ev_version_major(); version_minor = ev_version_minor(); printf("version_major: %d\n",version_major); printf("version_minor: %d\n",version_minor);笔者的环原创 2021-09-16 21:56:00 · 193 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读3-API-ev_version_major(),ev_version_minor()
上篇阅读了ev.h里面一些监视器的声明,这篇阅读API声明。ev.h 在对于API的声明部分,开头就是一个条件宏:#if EV_PROTOTYPESEV_API_DECL int ev_version_major (void) EV_THROW;EV_API_DECL int ev_version_minor (void) EV_THROW;EV_API_DECL unsigned int ev_supported_backends (void) EV_THROW;EV_API_DECL un原创 2021-09-15 20:52:31 · 262 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读2-各种监视器源码解析
‘基类’与‘派生类’基类在上文提到,是/* base class, nothing to see here unless you subclass */typedef struct ev_watcher{ EV_WATCHER (ev_watcher)} ev_watcher;/* base class, nothing to see here unless you subclass */typedef struct ev_watcher_list{ EV_WATCHER_LIST原创 2021-09-15 16:36:42 · 250 阅读 · 0 评论 -
C-libev学习笔记-事件库源码阅读-1
特征libev是一个用C语言编写的轻量级的事件驱动库,支持多种IO复用接口。IO接口有:select,poll,epoll,kqueue等支持的事件:ev_io; //IO读写ev_stat; //文件属性ev_signal;//信号ev_timer;//定时器ev_periodic;//绝对定时器ev_child;//子进程ev_fork;//fork事件ev_cleanup;//ev_loop退出触发ev_idle;//ev_loop空闲触发ev_embed;//嵌入后台循环原创 2021-09-13 21:25:28 · 357 阅读 · 0 评论 -
C-libev-CentOS8 gcc 编译连接依赖库
编写的libev文件,在CentOS编译时,除了在命令中要指定 -lev之外,还要设置PATH变量,但是虚拟机每次重启都需要重新设置,要长久设置需要:执行:vi /etc/profile在代码最后添加:export LD_LIBRARY_PATH=/home/server/lib注意自己libev的位置,默认在/usr/local/lib...原创 2021-09-12 18:40:34 · 174 阅读 · 0 评论 -
C-libev 小型服务器代码示例
代码非原创,只做更改和阅读,学习使用环境:CentOS 8,QT;可以运行#include <stdio.h>#include <unistd.h>//提供对POSIX操作系统API的访问功能的头文件,如fork,pipe,io原语#include <stdlib.h>#include <math.h>#include <errno.h>//c标准头文件,返回错误信息的宏#include <netinet/in.h>//原创 2021-09-12 18:30:13 · 215 阅读 · 0 评论 -
C-libev 示例代码阅读
第一次阅读libev代码,学习用环境:CentOS 8,QT;可以运行#include <stdio.h>#include <ev.h>#include <signal.h>#include <sys/unistd.h>#include <string.h>//libev的结构框架:定义监视器,定义监视器的回调函数,将监视器与回调函数绑定(监视器的初始化),监视器在驱动器注册,驱动器跑起来。//这三个是监控器被触发的时候要执行原创 2021-09-12 18:26:43 · 234 阅读 · 0 评论