File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libevent / sample / signal-test.c
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:02:54 2012 UTC (12 years, 4 months ago) by misho
CVS tags: MAIN, HEAD
Initial revision

    1: /*
    2:  * Compile with:
    3:  * cc -I/usr/local/include -o signal-test \
    4:  *   signal-test.c -L/usr/local/lib -levent
    5:  */
    6: 
    7: #include <sys/types.h>
    8: 
    9: #ifdef HAVE_CONFIG_H
   10: #include "config.h"
   11: #endif
   12: 
   13: #include <sys/stat.h>
   14: #ifndef WIN32
   15: #include <sys/queue.h>
   16: #include <unistd.h>
   17: #include <sys/time.h>
   18: #else
   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: int called = 0;
   31: 
   32: static void
   33: signal_cb(int fd, short event, void *arg)
   34: {
   35: 	struct event *signal = arg;
   36: 
   37: 	printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal));
   38: 
   39: 	if (called >= 2)
   40: 		event_del(signal);
   41: 
   42: 	called++;
   43: }
   44: 
   45: int
   46: main (int argc, char **argv)
   47: {
   48: 	struct event signal_int;
   49: 
   50: 	/* Initalize the event library */
   51: 	struct event_base* base = event_base_new();
   52: 
   53: 	/* Initalize one event */
   54: 	event_set(&signal_int, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb,
   55: 	    &signal_int);
   56: 	event_base_set(base, &signal_int);
   57: 
   58: 	event_add(&signal_int, NULL);
   59: 
   60: 	event_base_dispatch(base);
   61: 	event_base_free(base);
   62: 
   63: 	return (0);
   64: }
   65: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>