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) 收藏 举报