summaryrefslogtreecommitdiff
path: root/utils/testsignal.cc
diff options
context:
space:
mode:
Diffstat (limited to 'utils/testsignal.cc')
-rw-r--r--utils/testsignal.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/utils/testsignal.cc b/utils/testsignal.cc
new file mode 100644
index 0000000..4971b51
--- /dev/null
+++ b/utils/testsignal.cc
@@ -0,0 +1,74 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "Signal.h"
+
+extern "C" {
+ int write (int, const void*, unsigned int);
+ int strlen (const char*);
+}
+
+const char* signal_strings [32] = {
+ "SIGHUP\n",
+ "SIGINT\n",
+ "SIGQUIT\n",
+ "SIGILL\n",
+ "SIGTRAP\n",
+ "SIGABRT\n",
+ "SIGEMT\n",
+ "SIGFPE\n",
+ "SIGKILL\n",
+ "SIGBUS\n",
+ "SIGSEGV\n",
+ "SIGSYS\n",
+ "SIGPIPE\n",
+ "SIGALRM\n",
+ "SIGTERM\n",
+ "SIGUSR1\n",
+ "SIGUSR2\n",
+ "SIGCHLD\n",
+ "SIGPWR\n",
+ "SIGVTALRM\n",
+ "SIGPROF\n",
+ "SIGIO\n",
+ "SIGWINDOW\n",
+ "SIGSTOP\n",
+ "SIGTSTP\n",
+ "SIGCONT\n",
+ "SIGTTIN\n",
+ "SIGTTOU\n",
+ "SIGURG\n",
+ "SIGLOST\n",
+ "SIGRESERVE\n",
+ "SIGDIL\n"
+};
+
+void
+outputsig (int sig)
+{
+ write (1, signal_strings [sig-1], strlen (signal_strings [sig-1]));
+}
+
+void
+ignoresig (int)
+{
+}
+
+main ()
+{
+ {
+ printf ("block signal 2\n");
+ CcuSignalBlocker b (2);
+ getchar ();
+ }
+ printf ("print signals 1 and 2\n");
+ CcuSignalHandler s1 (1, outputsig);
+ CcuSignalHandler s3 (2, outputsig);
+ getchar ();
+ {
+ printf ("ignore signal 1\n");
+ CcuSignalHandler s2 (1, ignoresig);
+ getchar ();
+ }
+ printf ("print again signal 1\n");
+ while (1);
+}