| #include <stdio.h> |
| #include <signal.h> |
| #include <unistd.h> |
| #include <string.h> |
| #include <stdlib.h> |
| |
| int main (int ac, char **av) |
| { |
| char *hostname = NULL; |
| int i, rc = 0; |
| struct sigaction act; |
| |
| if (!(hostname = getenv("SLURMD_NODENAME"))) { |
| fprintf (stderr, "Failed to get hostname on this node\n"); |
| hostname = "Unknown"; |
| } |
| |
| for (i = 1; i < SIGRTMAX; i++) { |
| sigaction (i, NULL, &act); |
| /* NOTE: If the slurmd is started from a terminal such as |
| * rxvt-unicode or anything like it (aterm) it will ignore |
| * SIGFPE (8) thus failing this test. |
| */ |
| if (act.sa_handler == SIG_IGN) { |
| fprintf (stderr, "%s: Signal %d is ignored!\n", |
| hostname, i); |
| if (i == SIGFPE) |
| fprintf (stderr, "%s: Terminals like rxvt-unicode/aterm will ignore SIGFPE. Rerun this test where the slurmd isn't started from that terminal if you get this message.\n", |
| hostname); |
| rc = 1; |
| } else if (act.sa_handler != SIG_DFL) { |
| fprintf (stderr, |
| "%s: Signal %d has handler function!\n", |
| hostname, i); |
| rc = 1; |
| } |
| } |
| return (rc); |
| } |