Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

exit(2)

kill(2)

pause(2)

sigaltstack(2)

signal(2)

sigprocmask(2)

sigsend(2)

sigsuspend(2)

wait(2)

sigsetops(3C)

siginfo(5)

signal(5)

ucontext(5)

kill(1)





   sigaction(2)                                                   sigaction(2)


   NAME
         sigaction - detailed signal management

   SYNOPSIS
         #include <signal.h>

         int sigaction(int sig, const struct sigaction *act,
               struct sigaction *oact);

   DESCRIPTION
         sigaction allows the calling process to examine and/or specify the
         action to be taken on delivery of a specific signal.  [See signal(5)
         for an explanation of general signal concepts.]

         sig specifies the signal and can be assigned any of the signals
         specified in signal(5) except SIGKILL and SIGSTOP

         If the argument act is not NULL, it points to a structure specifying
         the new action to be taken when delivering sig.  If the argument oact
         is not NULL, it points to a structure where the action previously
         associated with sig is to be stored on return from sigaction.

         The sigaction structure includes the following members:

               void         (*sa_handler)();
               sigset_t     sa_mask;
               int          sa_flags;

         sa_handler specifies the disposition of the signal and may take any
         of the values specified in signal(5).

         sa_mask specifies a set of signals to be blocked while the signal
         handler is active.  On entry to the signal handler, that set of
         signals is added to the set of signals already being blocked when the
         signal is delivered.  In addition, the signal that caused the handler
         to be executed will also be blocked, unless the SA_NODEFER flag has
         been specified.  SIGSTOP and SIGKILL cannot be blocked (the system
         silently enforces this restriction).

         sa_flags specifies a set of flags used to modify the delivery of the
         signal.  It is formed by a logical OR of any of the following values:

               SA_ONSTACK          If set and the signal is caught and an
                                   alternate signal stack has been declared
                                   with sigaltstack(2), the signal is
                                   delivered to the calling process on that
                                   stack.  Otherwise, the signal is delivered
                                   on the same stack as the main program.





   7/91                                                                 Page 1









   sigaction(2)                                                   sigaction(2)


               SA_RESETHAND        If set and the signal is caught, the
                                   disposition of the signal is reset to
                                   SIG_DFL and the signal will not be blocked
                                   on entry to the signal handler (SIGILL,
                                   SIGTRAP, and SIGPWR cannot be automatically
                                   reset when delivered; the system silently
                                   enforces this restriction).

               SA_NODEFER          If set and the signal is caught, the signal
                                   will not be automatically blocked by the
                                   kernel while it is being caught.

               SA_RESTART          If set and the signal is caught, a system
                                   call that is interrupted by the execution
                                   of this signal's handler is transparently
                                   restarted by the system.  Otherwise, that
                                   system call returns an EINTR error.

               SA_SIGINFO          If cleared and the signal is caught, sig is
                                   passed as the only argument to the signal-
                                   catching function.  If set and the signal
                                   is caught, pending signals of type sig are
                                   reliably queued to the calling process and
                                   two additional arguments are passed to the
                                   signal-catching function.  If the second
                                   argument is not equal to NULL, it points to
                                   a siginfo_t structure containing the reason
                                   why the signal was generated [see
                                   siginfo(5)]; the third argument points to a
                                   ucontext_t structure containing the
                                   receiving process's context when the signal
                                   was delivered [see ucontext(5)].

               SA_NOCLDWAIT        If set and sig equals SIGCHLD, the system
                                   will not create zombie processes when
                                   children of the calling process exit.  If
                                   the calling process subsequently issues a
                                   wait(2), it blocks until all of the calling
                                   process's child processes terminate, and
                                   then returns a value of -1 with errno set
                                   to ECHILD.

               SA_NOCLDSTOP        If set and sig equals SIGCHLD, sig will not
                                   be sent to the calling process when its
                                   child processes stop or continue.

         sigaction fails if any of the following is true:

         EINVAL         The value of the sig argument is not a valid signal
                        number or is equal to SIGKILL or SIGSTOP.



   Page 2                                                                 7/91









   sigaction(2)                                                   sigaction(2)


         EFAULT         act or oact points outside the process's allocated
                        address space.

   DIAGNOSTICS
         On success, sigaction returns zero.  On failure, it returns -1 and
         sets errno to indicate the error.

   SEE ALSO
         intro(2), exit(2), kill(2), pause(2), sigaltstack(2), signal(2),
         sigprocmask(2), sigsend(2), sigsuspend(2), wait(2), sigsetops(3C),
         siginfo(5), signal(5), ucontext(5).

         kill(1) in the User's Reference Manual.

   NOTES
         If the system call is reading from or writing to a terminal and the
         terminal's NOFLSH bit is cleared, data may be flushed [see
         termio(7)].



































   7/91                                                                 Page 3





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026