You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.2 KiB
72 lines
1.2 KiB
/* |
|
* Compile with: |
|
* cc -I/usr/local/include -o signal-test \ |
|
* signal-test.c -L/usr/local/lib -levent |
|
*/ |
|
|
|
#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 <event2/event.h> |
|
|
|
int called = 0; |
|
|
|
static void |
|
signal_cb(evutil_socket_t fd, short event, void *arg) |
|
{ |
|
struct event *signal = arg; |
|
|
|
printf("signal_cb: got signal %d\n", event_get_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 */ |
|
signal_int = evsignal_new(base, SIGINT, signal_cb, event_self_cbarg()); |
|
|
|
event_add(signal_int, NULL); |
|
|
|
event_base_dispatch(base); |
|
event_free(signal_int); |
|
event_base_free(base); |
|
|
|
return (0); |
|
} |
|
|
|
|