https://blog.csdn.net/sauphy/article/details/50121223
1.下载
http://download.csdn.net/detail/sauphy/9314091
2. 编译
./configure --prefix=/opt/libevent
make
make install
3. 开发编译
gcc test_signal.c -o ok -I/opt/libevent/include -L/opt/libevent/lib -levent
./ok
3-1、连接出错:
error while loading shared libraries:
libevent-2.0.so.5: cannot open shared object file: No such file or directory
A1、
ln -s /opt/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
4. 运行
./ok
Ctrl+C 运行(显示两个信号)
===============================
#include <sys/types.h>
#include <event2/event-config.h>
#include <sys/stat.h>
#ifndef WIN32
#include <sys/queue.h>
#include <unistd.h>
#include <sys/time.h>
#else
#include <winsock2.h>
#include <windows.h>
#endif
#include <signal.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <event.h>
#ifdef _EVENT___func__
#define __func__ _EVENT___func__
#endif
int called = 0;
static void
signal_cb(evutil_socket_t fd, short event, void *arg)
{
struct event *signal = arg;
printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal));
if (called >= 2)
event_del(signal);
called++;
}
int
main(int argc, char **argv)
{
struct event signal_int;
struct event_base* base;
#ifdef WIN32
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2, 2);
(void) WSAStartup(wVersionRequested, &wsaData);
#endif
/* Initalize the event library */
base = event_base_new();
/* Initalize one event */
event_assign(&signal_int, base, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb,
&signal_int);
event_add(&signal_int, NULL);
event_base_dispatch(base);
event_base_free(base);
return (0);
}
================
CC = gcc
CXX = g++
LD_FLAG = -g
LIBS = -L/opt/libevent/lib -levent
INCLUDES = -I/opt/libevent/include
TARGET = ok
${TARGET}:
$(CC) main.c $(LD_FLAG) $(LIBS) $(INCLUDES) -o $(TARGET)
clean:
rm -rf *.o *~ $(TARGET)
————————————————