SIGACTION(2-SVR4) RISC/os Reference Manual SIGACTION(2-SVR4)
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 sig-
nals 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
Printed 11/19/92 Page 1
SIGACTION(2-SVR4) RISC/os Reference Manual SIGACTION(2-SVR4)
stack as the main program.
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 restric-
tion).
SA_NODEFER If set and the signal is caught,
the signal will not be automati-
cally 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 argu-
ments 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 sig-
nal 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 ucon-
text(5)].
SA_NOCLDWAIT If set and sig equals SIGCHLD, the
system will not create zombie
processes when children of the cal-
ling 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.
Page 2 Printed 11/19/92
SIGACTION(2-SVR4) RISC/os Reference Manual SIGACTION(2-SVR4)
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 SIG-
STOP.
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), sig-
nal(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)].
Printed 11/19/92 Page 3