From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/OR_USING_C/08.4.c | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 reference/C/CONTRIB/OR_USING_C/08.4.c (limited to 'reference/C/CONTRIB/OR_USING_C/08.4.c') diff --git a/reference/C/CONTRIB/OR_USING_C/08.4.c b/reference/C/CONTRIB/OR_USING_C/08.4.c new file mode 100644 index 0000000..3bcc96c --- /dev/null +++ b/reference/C/CONTRIB/OR_USING_C/08.4.c @@ -0,0 +1,47 @@ +#include + +main() +{ + /* + * Declare handler routine so we can use its + * name. + */ + extern int handler(); + /* + * Send signal to handler routine. Only do so + * if the signal is not already being ignored. + */ + if (signal(SIGINT, SIG_IGN) != SIG_IGN) + signal(SIGINT, handler); + /* + * Loop here. + */ + for (;;) + pause(); +} +/* + * handler--handle the signal. sig is the signal + * number which interrupted us. + */ +handler(sig) +int sig; +{ + /* + * Users of 4.2 and 4.3BSD systems should un-comment + * this line, which will make this program + * behave as if it were on a non-Berkeley + * system (we reset the signal by hand). + */ + /* signal(sig, SIG_DFL); */ + /* + * Ignore the signal for the duration of this + * routine. + */ + signal(sig, SIG_IGN); + printf("OUCH\n"); + /* + * Reset the signal to come here again. + */ + signal(SIGINT, handler); +} + -- cgit v1.2.3-54-g00ecf