CODE EXAMPLES 1 sigaction code example include signal

  • Slides: 4
Download presentation
CODE EXAMPLES 1

CODE EXAMPLES 1

sigaction code example #include <signal. h> #include <stdio. h> #include <string. h> #include <sys/types.

sigaction code example #include <signal. h> #include <stdio. h> #include <string. h> #include <sys/types. h> #include <unistd. h> sig_atomic_t sigusr 1_count = 0; void handler (int signal_number){ ++sigusr 1_count; } int main (int argc, char ** argv){ struct sigaction sa; memset (&sa, 0, sizeof (sa)); sa. sa_handler = &handler; sigaction (SIGUSR 1, &sa, NULL); /* Do some lengthy stuff here. */ /*. . . */ printf (“SIGUSR 1 was raised %d timesn”, sigusr 1_count); return 0; } 2

sigprocmask code example /** This program blocks SIGTERM signal for 10 seconds using sigprocmask(2)

sigprocmask code example /** This program blocks SIGTERM signal for 10 seconds using sigprocmask(2) * After that the signal is unblocked and the queued signal is handled. */ #include <signal. h> #include <stdio. h> #include <string. h> #include <unistd. h> static int got_signal = 0; static void hdl (int sig) { got_signal = 1; } int main (int argc, char *argv[]) { sigset_t mask; sigset_t orig_mask; struct sigaction act; memset (&act, 0, sizeof(act)); act. sa_handler = hdl; 3

sigprocmask code example if (sigaction(SIGTERM, &act, 0)) { perror ("sigaction"); return 1; } sigemptyset

sigprocmask code example if (sigaction(SIGTERM, &act, 0)) { perror ("sigaction"); return 1; } sigemptyset (&mask); sigaddset (&mask, SIGTERM); if (sigprocmask(SIG_BLOCK, &mask, &orig_mask) < 0) { perror ("sigprocmask"); return 1; } sleep (10); if (sigprocmask(SIG_SETMASK, &orig_mask, NULL) < 0) { perror ("sigprocmask"); return 1; } sleep (1); if (got_signal) puts ("Got signal"); return 0; } 4