1 /* $NetBSD: signal-test.c,v 1.1.1.1 2013/04/11 16:43:31 christos Exp $ */ 2 /* 3 * Compile with: 4 * cc -I/usr/local/include -o signal-test \ 5 * signal-test.c -L/usr/local/lib -levent 6 */ 7 8 #include <sys/types.h> 9 10 #include <event2/event-config.h> 11 12 #include <sys/stat.h> 13 #ifndef WIN32 14 #include <sys/queue.h> 15 #include <unistd.h> 16 #include <sys/time.h> 17 #else 18 #include <winsock2.h> 19 #include <windows.h> 20 #endif 21 #include <signal.h> 22 #include <fcntl.h> 23 #include <stdlib.h> 24 #include <stdio.h> 25 #include <string.h> 26 #include <errno.h> 27 28 #include <event.h> 29 30 #ifdef _EVENT___func__ 31 #define __func__ _EVENT___func__ 32 #endif 33 34 int called = 0; 35 36 static void 37 signal_cb(evutil_socket_t fd, short event, void *arg) 38 { 39 struct event *signal = arg; 40 41 printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal)); 42 43 if (called >= 2) 44 event_del(signal); 45 46 called++; 47 } 48 49 int 50 main(int argc, char **argv) 51 { 52 struct event signal_int; 53 struct event_base* base; 54 #ifdef WIN32 55 WORD wVersionRequested; 56 WSADATA wsaData; 57 58 wVersionRequested = MAKEWORD(2, 2); 59 60 (void) WSAStartup(wVersionRequested, &wsaData); 61 #endif 62 63 /* Initalize the event library */ 64 base = event_base_new(); 65 66 /* Initalize one event */ 67 event_assign(&signal_int, base, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb, 68 &signal_int); 69 70 event_add(&signal_int, NULL); 71 72 event_base_dispatch(base); 73 event_base_free(base); 74 75 return (0); 76 } 77 78