block_signal.c 411 B

12345678910111213141516171819202122
  1. /*
  2. * Handy function to block or unblock a signal, which does all the
  3. * messing about with sigset_t for you.
  4. */
  5. #include <signal.h>
  6. #include <stdlib.h>
  7. #include "defs.h"
  8. void block_signal(int sig, bool block_it)
  9. {
  10. sigset_t ss;
  11. sigemptyset(&ss);
  12. sigaddset(&ss, sig);
  13. if (sigprocmask(block_it ? SIG_BLOCK : SIG_UNBLOCK, &ss, 0) < 0) {
  14. perror("sigprocmask");
  15. exit(1);
  16. }
  17. }