summaryrefslogtreecommitdiff
path: root/signal/tst-signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'signal/tst-signal.c')
-rw-r--r--signal/tst-signal.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/signal/tst-signal.c b/signal/tst-signal.c
new file mode 100644
index 0000000000..f622842f7a
--- /dev/null
+++ b/signal/tst-signal.c
@@ -0,0 +1,44 @@
+#include <ansidecl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int win = 0;
+
+void
+DEFUN(handler, (sig), int sig)
+{
+ printf("Received signal %d (%s).\n", sig, strsignal(sig));
+ win = 1;
+}
+
+int
+DEFUN_VOID(main)
+{
+ if (signal(SIGTERM, handler) == SIG_ERR)
+ {
+ perror("signal: SIGTERM");
+ exit(EXIT_FAILURE);
+ }
+
+ puts("Set handler.");
+
+ printf("Sending myself signal %d.\n", SIGTERM);
+ fflush(stdout);
+
+ if (raise(SIGTERM) < 0)
+ {
+ perror("raise: SIGTERM");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!win)
+ {
+ puts("Didn't get any signal. Test FAILED!");
+ exit(EXIT_FAILURE);
+ }
+
+ puts("Got a signal. Test succeeded.");
+ exit(EXIT_SUCCESS);
+}