CentOS/Ubuntu/Debian安装LibeventCentOS安装Libevent库(含示例代码)库(含示例代码)
使用命令:CentOS安装Libevent库(含示例代码)
sudo yum install libevent-devel
Ubuntu/Debian:
sudo apt install libevent-dev
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <event.h>
#include <signal.h>
void sig_cb(int fd, short ev, void* arg)
{if ( ev & EV_SIGNAL ){printf("sig=%d\n",fd);}
}
void time_cb(int fd, short ev, void* arg)
{if ( ev & EV_TIMEOUT ){printf("time out\n");}
}
int main()
{struct event_base * base = event_init();if ( base == NULL ){exit(1);}//struct event *sig_ev = evsignal_new(base,SIGINT,sig_cb,NULL);struct event * sig_ev = event_new(base,SIGINT,EV_SIGNAL,sig_cb,NULL);if ( sig_ev == NULL ){exit(1);}event_add(sig_ev,NULL);//struct event * time_ev = evtimer_new(base,time_cb,NULL);struct event * time_ev = event_new(base,-1,EV_TIMEOUT,time_cb,NULL);if ( time_ev == NULL ){exit(1);}struct timeval tv = {5,0};event_add(time_ev,&tv);event_base_dispatch(base);// 阻塞 select/ poll/ epollevent_free(time_ev);event_free(sig_ev);event_base_free(base);
}
编译:
g++ 你的文件名 -o Libevent -levent
运行起来后:
你键入Ctrl+c,打印sig=2
到达5秒后,将打印time out
两个事件都触发后,将退出程序。