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