Libevent 学习笔记
为了准备实习,提前学习一下Libevent,由于官方文档主要都是在介绍库的内容,有很多坑还是得自己踩,所以开一篇文章记录一下
安装&&部署
安装还是比较容易,安装github上的步骤就可以顺利完成,就是make install
这一步是需要root权限的,不然会出现拒绝访问的情况。
安装完成之后按照官方文档的教程写了一个很简单的log代码
#include <event2/event.h>
#include <stdio.h>
static FILE *logfile = NULL;
static void discard_cb(int severity, const char *msg)
{
/* This callback dose nothing. */
}
static void write_to_file_cb(int severity, const char *msg)
{
const char *s;
if(!logfile)
return;
switch (severity) {
case _EVENT_LOG_DEBUG: s="debug"; break;
case _EVENT_LOG_MSG: s="msg"; break;
case _EVENT_LOG_WARN: s="warn"; break;
case _EVENT_LOG_ERR: s="error"; break;
default: s="?"; break;
}
fprintf(logfile, "[%s]%s\n", s, msg);
}
/* Turn off all logging form Libevent */
void suppress_logging(void)
{
event_set_log_callback(discard_cb);
}
/* Redirect all Libevent log messages to the C stdio file 'f' */
void set_logfile(FILE *f)
{
logfile = f;
event_set_log_callback(write_to_file_cb);
}
int main(int argc, char const *argv[])
{
FILE *file = fopen("log.txt", "w");
set_logfile(file);
write_to_file_cb(_EVENT_LOG_MSG, "Hello world");
suppress_logging();
return 0;
}
编译命令为
gcc test.c -levent
这时如果直接运行会报找不到库文件
error while loading shared libraries: libevent.so.2.2.0
查了stackoverflow,发现需要把/usr/local/lib下的文件链接到/usr/lib才可以
sudo ln -s /usr/local/lib/libevent.so.2.2.0 /usr/lib/libevent.so.2.2.0