summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/OR_USING_C/08.3.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/OR_USING_C/08.3.c')
-rw-r--r--reference/C/CONTRIB/OR_USING_C/08.3.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/OR_USING_C/08.3.c b/reference/C/CONTRIB/OR_USING_C/08.3.c
new file mode 100644
index 0000000..d6ec5f2
--- /dev/null
+++ b/reference/C/CONTRIB/OR_USING_C/08.3.c
@@ -0,0 +1,42 @@
+#include <signal.h>
+
+main()
+{
+ /*
+ * Declare handler routine so we can use its
+ * name.
+ */
+ extern int handler();
+
+ /*
+ * Send signal to handler routine.
+ */
+ signal(SIGINT, handler);
+
+ /*
+ * Loop here.
+ */
+ for (;;)
+ pause();
+}
+
+/*
+ * handler--handle the signal.
+ */
+handler()
+{
+ /*
+ * 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.
+ */
+ /* signal(SIGINT, SIG_DFL); */
+
+ printf("OUCH\n");
+
+ /*
+ * Reset the signal to come here again.
+ */
+ signal(SIGINT, handler);
+}
+