• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

XiaoXiaoli

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

libevent_信号事件

libevent_信号事件

 整体流程:

1.创建一个事件集合。

定义一个结构struct event_base *base = event_base_new();

手动释放event_base_free();

2.创建一个事件。

struct event ev;

3.将事件和信号绑定在一起。

event_assign(&ev, base, SIGINT, EV_SIGNAL|EV_PERSIST, signal_handle, NULL);

4.实现回调函数。

5.事件添加到集合中。event_add();

6.监听集合。event_base_dispatch();

代码实现如下:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <event.h>

int signal_count = 0; 
void signal_handle(evutil_socket_t fd, short events, void *arg){
    struct event * ev = (struct event*)arg;
    printf("收到信号 %d\n", fd);
    signal_count++;
    if(signal_count > 2){
        //将事件从集合中删除。
        event_del(ev);
    }

}

int main(){
    struct event_base *base = event_base_new();
    struct event ev;
    event_assign(&ev, base, SIGINT, EV_SIGNAL|EV_PERSIST, signal_handle, &ev);
    event_add(&ev, NULL);
    event_base_dispatch(base);
    event_base_free(base);
    return 0;
}

 

posted on 2021-01-31 19:22  XiaoXiaoli  阅读(160)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3