SIGPAUSE(3B) SIGPAUSE(3B) NAME sigpause - atomically release blocked signals and wait for interrupt (4.3BSD) SYNOPSIS #include <signal.h> int sigpause(int mask); mask = sigmask(int signum); To use any of the BSD signal routines (kill(3B), killpg(3B), sigblock(3B), signal(3B), sigpause(3B), sigsetmask(3B), sigstack(2B), sigvec(3B)) you must either 1) #define _BSD_SIGNALS or _BSD_COMPAT before including <signal.h>, or 2) specify one of them in the compile command or makefile: cc -D_BSD_SIGNALS -o prog prog.c DESCRIPTION sigpause assigns mask to the set of masked signals and then waits for a signal to arrive; upon return the original set of masked signals is restored after executing the handler(s) (if any) installed for the awakening signal(s). mask is usually 0 to indicate that no signals are now to be blocked. The macro sigmask is provided to construct the mask for a given signal number. Sigpause always terminates by being interrupted, returning -1 with the global integer errno set to EINTR. In normal usage, a signal is blocked using sigblock(3B), to begin a critical section, variables modified on the occurrence of the signal are examined to determine that there is no work to be done, and the process pauses awaiting work by using sigpause with the mask returned by sigblock. SEE ALSO sigblock(3B), sigvec(3B), signal(5). CAVEATS (IRIX) Because 4.3BSD and System V both have sigpause system calls, programs using 4.3BSD's version are actually executing BSDsigpause. This is transparent to the programmer except when attempting to set breakpoints in dbx; the breakpoint must be set at BSDsigpause. WARNING (IRIX) The 4.3BSD and System V signal facilities have different semantics. Using both facilities in the same program is strongly discouraged and will result in unpredictable behavior. Page 1