sigsuspend(2)




NAME

     sigsuspend - install a signal mask and suspend caller  until
     signal


SYNOPSIS

     #include <signal.h>

     int sigsuspend(const sigset_t *set);


DESCRIPTION

     The sigsuspend() function replaces the caller's signal  mask
     with  the  set of signals pointed to by the set argument and
     suspends the caller until delivery of a signal whose  action
     is  either  to execute a signal catching function or to ter-
     minate the process.

     If the action is to terminate the process, sigsuspend() does
     not  return.   If the action is to execute a signal catching
     function, sigsuspend() returns  after  the  signal  catching
     function  returns. On return, the signal mask is restored to
     the set that existed before the  call to sigsuspend().

     It is not possible to block those  signals  that  cannot  be
     ignored  (see   signal(3HEAD)); this restriction is silently
     imposed by the system.


RETURN VALUES

     Since sigsuspend() suspends the caller's execution  indefin-
     itely,  there  is  no successful completion return value. On
     failure, it returns -1 and sets errno to indicate the error.


ERRORS

     The sigsuspend() function will fail if:

     EFAULT
           The set argument points to an illegal address.

     EINTR A signal was caught by  the  caller  and  control  was
           returned from the signal catching function.


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | Async-Signal-Safe           |
    |_____________________________|_____________________________|


SEE ALSO

     sigaction(2),   sigprocmask(2),   sigwait(2),    signal(3C),
     signal(3HEAD), sigsetops(3C), attributes (5)


NOTES

     If the caller specifies more than one  unblocked  signal  in
     the mask to sigsuspend(), more than one signal might be pro-
     cessed before the call to sigsuspend() returns.

     While the caller is executing the signal handler that inter-
     rupted  its call to sigsuspend(), its signal mask is the one
     passed to sigsuspend(), modified as usual by the signal mask
     specification  in the signal's sigaction(2) parameters.  The
     caller's signal mask is not restored to its  previous  value
     until  the  caller returns from all the signal handlers that
     interrupted sigsuspend().


Man(1) output converted with man2html