ssiiggssuussppeenndd() -- System Call (libc)

Install a signal mask and suspend process
#iinncclluuddee <ssiiggnnaall.hh>
iinntt ssiiggssuussppeenndd(_s_e_t)
ccoonnsstt ssiiggsseett_tt *_s_e_t;

ssiiggssuussppeenndd() replaces the process's signal  mask with the set of signals to
which _s_e_t  points, then  suspends the current  process until it  receives a
signal  that either  terminates the  process  or invokes  a signal-handling
function.

If  the  received  signal terminates  the  process,  ssiiggssuussppeenndd() does  not
return.   If,  however,  the  received  signal  invokes  a  signal-handling
function, ssiiggssuussppeenndd()  restores the original  signal mask and  returns the
value returned by that function.

Because ssiiggssuussppeenndd() indefinitely  suspends execution of the process, there
is no return value that indicates successful completion.  If something goes
wrong, it returns -1 and  sets eerrrrnnoo to an appropriate value.  ssiiggssuussppeenndd()
fails if either of the following is true:

-> The calling process catches a  signal and grabs control from the signal-
   catching function.  ssiiggssuussppeenndd() sets eerrrrnnoo to EEIINNTTRR.

-> _s_e_t points outside  the process's allocated address space.  ssiiggssuussppeenndd()
   sets eerrrrnnoo to EEFFAAUULLTT.

_S_e_e _A_l_s_o
lliibbcc, ssiigglloonnggjjmmpp(), ssiiggnnaall(), ssiiggsseettjjmmpp()
POSIX Standard, section 3.3.7
