#include #include #include #include void ouch (int sig) { sigset_t set, oset; sigemptyset (&set); sigprocmask (SIG_SETMASK, &set, &oset); sigprocmask (SIG_SETMASK, NULL, &set); printf ("sig %d, set 0%x, oset 0%x\n", sig, set, oset); } int main (int argc, char **argv) { sigset_t set, oset; sigemptyset (&set); sigaddset (&set, SIGUSR1); sigaddset (&set, SIGINT); sigprocmask (SIG_SETMASK, &set, &oset); printf ("set 0%x, oset 0%x\n", set, oset); signal (SIGALRM, ouch); alarm (1); pause (); sigprocmask (SIG_SETMASK, NULL, &oset); printf ("oset 0%x\n", oset); exit (0); }