並非所有流浪者都迷失了自我
阿新 • • 發佈:2018-12-16
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