Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigaction(2) — Motorola System V 88k Release 4 Version 4.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

kill(1)

exit(2)

intro(2)

kill(2)

pause(2)

signal(2)

sigprocmask(2)

sigsend(2)

sigsuspend(2)

wait(2)

sigsetops(3C)

siginfo(5)

signal(5)

ucontext(5)

sigaction(2)  —  SYSTEM CALLS

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. 

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

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

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

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

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