sigsetmask



SIGSETMASK(3)             OpenBSD Programmer's Manual            SIGSETMASK(3)


NAME

     sigsetmask - set current signal mask


SYNOPSIS

     #include <signal.h>

     int
     sigsetmask(int mask);

     sigmask(int signum);


DESCRIPTION

     This interface is made obsoleted by: sigprocmask(2).

     sigsetmask() sets the current signal mask.  Signals are blocked from
     delivery if the corresponding bit in mask is a 1; the macro sigmask() is
     provided to construct the mask for a given signum.

     The system quietly disallows SIGKILL or SIGSTOP to be blocked.


RETURN VALUES

     The previous set of masked signals is returned.


EXAMPLES

     The following example utilizing sigsetmask():

           int omask;

           omask = sigblock(sigmask(SIGINT) | sigmask(SIGHUP));

           ...

           sigsetmask(omask & ~(sigmask(SIGINT) | sigmask(SIGHUP)));

     Could be converted literally to:

           sigset_t set, oset;

           sigemptyset(&set);
           sigaddset(&set, SIGINT);
           sigaddset(&set, SIGHUP);
           sigprocmask(SIG_BLOCK, &set, &oset);

           ...

           sigdelset(&oset, SIGINT);
           sigdelset(&oset, SIGHUP);
           sigprocmask(SIG_SETMASK, &oset, NULL);

     Another, clearer, alternative is:

           sigset_t set;

           sigemptyset(&set);
           sigaddset(&set, SIGINT);
           sigaddset(&set, SIGHUP);
           sigprocmask(SIG_BLOCK, &set, NULL);

           ...

           sigprocmask(SIG_UNBLOCK, &set, NULL);

     To completely clear the signal mask using sigsetmask() one can do:

           (void) sigsetmask(0);

     Which can be expressed via sigprocmask(2) as:

           sigset_t eset;

           sigemptyset(&eset);
           (void) sigprocmask(SIG_SETMASK, &eset, NULL);


SEE ALSO

     kill(2), sigaction(2), sigprocmask(2), sigsuspend(2), sigblock(3),
     sigsetops(3), sigvec(3)


HISTORY

     A sigsetmask() system call first appeared in 4.2BSD.  In 4.3BSD-Reno, it
     was reimplemented as a wrapper around sigprocmask(2).  The old system
     call was kept for compatibility until OpenBSD 4.9.

OpenBSD 5.4                      July 17, 2013                     OpenBSD 5.4

[Unix Hosting | Open-Source | Contact Us]
[Engineering & Automation | Software Development | Server Applications]