#include #include #include #include #include int main(int argc, char **argv) { if (argc == 1) { sigset_t all; sigfillset(&all); sigprocmask(SIG_SETMASK, &all, NULL); execl(argv[0], argv[0], "test", NULL); fprintf(stderr, "FAILED: execl failed with %s\n", strerror(errno)); return 1; } else { sigset_t mask; int i; sigprocmask(SIG_SETMASK, NULL, &mask); for(i = 1; i < NSIG; i++) { if (i == SIGKILL || i == SIGSTOP) continue; if (!sigismember(&mask, i)) printf("signal %d missing from mask\n", i); } } return 0; }