xref: /minix3/external/bsd/libevent/dist/sample/signal-test.c (revision e985b929927b5932e3b68f4b50587d458900107a)
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