Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigaction(2) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exit(2)

intro(2)

kill(1)

kill(2)

pause(2)

sigaltstack(2)

siginfo(5)

signal(2)

signal(5)

sigprocmask(2)

sigsend(2)

sigsetops(3C)

sigsuspend(2)

ucontext(5)

wait(2)

sigaction(2)






       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(2).

             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:





                           Copyright 1994 Novell, Inc.               Page 1













      sigaction(2)                                            sigaction(2)


            SA_ONSTACK      If set and the signal is caught and an
                            alternate signal stack has been declared by
                            the receiving LWP the signal is delivered on
                            that stack.  Otherwise, the signal should be
                            delivered on the current stack of the
                            receiving LWP.

                            The SA_ONSTACK flag specifies that whenever
                            the process receives the signal type sig the
                            response is handled on an alternative stack.
                            The location and size of the alternative stack
                            is specified per LWP.

                            Alternate signal handling stacks can be
                            defined via the sigaltstack(2) system call.

            SA_RESETHAND    If set and the signal is caught, the
                            disposition of the signal is reset to SIG_DFL
                            (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 call that
                            is interrupted by the execution of this
                            signal's handler is transparently restarted by
                            the system.  Otherwise, that call returns an
                            EINTR error.  Some system calls cannot be
                            restarted when they are interrupted, even when
                            SA_RESTART is set.  For example, sleep(3C),
                            pause(2), sigpause(3BSD), sigsuspend(2) cannot
                            be restarted.

            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, 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


                          Copyright 1994 Novell, Inc.               Page 2













       sigaction(2)                                            sigaction(2)


                             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.

             SA_WAITSIG      When sig is SIGWAITING [see signal(5)] this
                             flag requests the generation of the SIGWAITING
                             signal type when all LWPs of the process are
                             blocked at an interruptible priority.

                             The SA_WAITSIG signal type might be used by
                             user level threads libraries trigger the
                             creation of additional LWPs for the process.

          Return Values
             On success, sigaction returns 0.  On failure, sigaction
             returns -1 and sets errno to identify the error.

          Errors
             In the following conditions, sigaction fails and sets errno
             to:

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

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

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





                           Copyright 1994 Novell, Inc.               Page 3













      sigaction(2)                                            sigaction(2)


      NOTICES
            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)].

         Considerations for Threads Programming
            The handler defined by act is common to all threads in a
            process.

            The Threads Library does not support alternate signal handling
            stacks for threads.

            The SA_WAITSIG flag (see description above) can be used in
            support of threads libraries.

            Further details can be found in signal(5).
































                          Copyright 1994 Novell, Inc.               Page 4








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