summaryrefslogtreecommitdiff
path: root/signal
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1991-01-24 20:29:09 +0000
committerRoland McGrath <roland@gnu.org>1991-01-24 20:29:09 +0000
commit28b7e890bb2f616ec2c91260c7a3e6c08e0d44e8 (patch)
tree1be939d7a3257ba1af10a7e1fe0d776d4e88eb07 /signal
parentd7c691d425d297ea29848dc4e57be02966763ff3 (diff)
Initial revision
Diffstat (limited to 'signal')
-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..591befe0eb
--- /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.");
+ exit(EXIT_FAILURE);
+ }
+
+ puts("Got a signal.");
+ exit(EXIT_SUCCESS);
+}