michael@0: /* michael@0: * Compile with: michael@0: * cc -I/usr/local/include -o signal-test \ michael@0: * signal-test.c -L/usr/local/lib -levent michael@0: */ michael@0: michael@0: #include michael@0: michael@0: #include michael@0: michael@0: #include michael@0: #ifndef WIN32 michael@0: #include michael@0: #include michael@0: #include michael@0: #else michael@0: #include michael@0: #include michael@0: #endif michael@0: #include michael@0: #include michael@0: #include michael@0: #include michael@0: #include michael@0: #include michael@0: michael@0: #include michael@0: michael@0: #ifdef _EVENT___func__ michael@0: #define __func__ _EVENT___func__ michael@0: #endif michael@0: michael@0: int called = 0; michael@0: michael@0: static void michael@0: signal_cb(evutil_socket_t fd, short event, void *arg) michael@0: { michael@0: struct event *signal = arg; michael@0: michael@0: printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal)); michael@0: michael@0: if (called >= 2) michael@0: event_del(signal); michael@0: michael@0: called++; michael@0: } michael@0: michael@0: int michael@0: main(int argc, char **argv) michael@0: { michael@0: struct event signal_int; michael@0: struct event_base* base; michael@0: #ifdef WIN32 michael@0: WORD wVersionRequested; michael@0: WSADATA wsaData; michael@0: michael@0: wVersionRequested = MAKEWORD(2, 2); michael@0: michael@0: (void) WSAStartup(wVersionRequested, &wsaData); michael@0: #endif michael@0: michael@0: /* Initalize the event library */ michael@0: base = event_base_new(); michael@0: michael@0: /* Initalize one event */ michael@0: event_assign(&signal_int, base, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb, michael@0: &signal_int); michael@0: michael@0: event_add(&signal_int, NULL); michael@0: michael@0: event_base_dispatch(base); michael@0: event_base_free(base); michael@0: michael@0: return (0); michael@0: } michael@0: