|
Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!
System Calls sigaction(2)
NAME
sigaction - detailed signal management
SYNOPSIS
#include <signal.h>
int sigaction(int sig, const struct sigaction *restrict act,
struct sigaction *restrict oact);
DESCRIPTION
The sigaction() function allows the calling process to exam-
ine or specify the action to be taken on delivery of a
specific signal. See signal.h(3HEAD) for an explanation of
general signal concepts.
The sig argument specifies the signal and can be assigned
any of the signals specified in signal.h(3HEAD) except SIG-
KILL 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)();
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
The storage occupied by sa_handler and sa_sigaction may
overlap, and a standard-conforming application (see stan-
dards(5)) must not use both simultaneously.
The sa_handler member identifies the action to be associated
with the specified signal, if the SA_SIGINFO flag (see
below) is cleared in the sa_flags field of the sigaction
structure. It may take any of the values specified in
signal.h(3HEAD) or that of a user specified signal handler.
If the SA_SIGINFO flag is set in the sa_flags field, the
sa_sigaction field specifies a signal-catching function.
The sa_mask member 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 addi-
tion, the signal that caused the handler to be executed will
also be blocked, unless the SA_NODEFER flag has been speci-
fied. SIGSTOP and SIGKILL cannot be blocked (the system
SunOS 5.10 Last change: 23 Mar 2005 1
System Calls sigaction(2)
silently enforces this restriction).
The sa_flags member 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 if the
thread that is chosen to processes a
delivered signal has an alternate signal
stack declared with sigaltstack(2), then it
will process the signal on that stack. Oth-
erwise, the signal is delivered on the
thread's normal stack.
SA_RESETHAND If set and the signal is caught, the dispo-
sition 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, functions
that are interrupted by the execution of
this signal's handler are transparently res-
tarted by the system, namely fcntl(2),
ioctl(2), wait(3C), waitid(2), and the fol-
lowing functions on slow devices like termi-
nals: getmsg() and getpmsg() (see
getmsg(2)); putmsg() and putpmsg() (see
putmsg(2)); pread(), read(), and readv()
(see read(2)); pwrite(), write(), and wri-
tev() (see write(2)); recv(), recvfrom(),
and recvmsg() (see recv(3SOCKET)); and
send(), sendto(), and sendmsg() (see
send(3SOCKET). Otherwise, the function
returns an EINTR error.
SA_SIGINFO If cleared and the signal is caught, sig is
passed as the only argument to the signal-
SunOS 5.10 Last change: 23 Mar 2005 2
System Calls sigaction(2)
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.h(3HEAD)); the third argument points
to a ucontext_t structure containing the
receiving process's context when the signal
was delivered (see ucontext.h(3HEAD)).
SA_NOCLDWAIT If set and sig equals SIGCHLD, the system
will not create zombie processes when chil-
dren of the calling process exit. If the
calling process subsequently issues a
wait(3C), it blocks until all of the calling
process's child processes terminate, and
then returns -1 with errno set to ECHILD.
SA_NOCLDSTOP If set and sig equals SIGCHLD, SIGCHLD will
not be sent to the calling process when its
child processes stop or continue.
RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is
returned, errno is set to indicate the error, and no new
signal handler is installed.
ERRORS
The sigaction() function will fail if:
EINVAL The value of the sig argument is not a valid
signal number or is equal to SIGKILL or
SIGSTOP. In addition, if in a multithreaded
process, it is equal to SIGWAITING, SIGCAN-
CEL, or SIGLWP.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.10 Last change: 23 Mar 2005 3
System Calls sigaction(2)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Standard |
|_____________________________|_____________________________|
| MT-Level | Async-Signal-Safe |
|_____________________________|_____________________________|
SEE ALSO
kill(1), intro(2), exit(2), fcntl(2), getmsg(2), ioctl(2),
kill(2), pause(2), putmsg(2), read(2), sigaltstack(2), sig-
procmask(2), sigsend(2), sigsuspend(2), waitid(2), write(2),
recv(3SOCKET), send(3SOCKET), siginfo.h(3HEAD), signal(3C),
signal.h(3HEAD), sigsetops(3C), ucontext.h(3HEAD), wait(3C),
attributes(5), standards(5)
NOTES
The handler routine can be declared:
void handler (int sig, siginfo_t *sip, ucontext_t *ucp);
The sig argument is the signal number. The sip argument is a
pointer (to space on the stack) to a siginfo_t structure,
which provides additional detail about the delivery of the
signal. The ucp argument is a pointer (again to space on the
stack) to a ucontext_t structure (defined in
<sys/ucontext.h>) which contains the context from before the
signal. It is not recommended that ucp be used by the
handler to restore the context from before the signal
delivery.
SunOS 5.10 Last change: 23 Mar 2005 4
Man(1) output converted with
man2html and wrapped by fishsponge
This page was generated on Wed Sep 12 11:27:10 GMT 2007
|
Your favourite pages:
No pages logged yet... Top 10 most popular pages:
prstat man page (24547 hits) (Solaris 10 11_06)
netcat man page (17695 hits) (Suse Linux 10.1)
ssh-socks5-proxy-connect man page (13536 hits) (Solaris 10 11_06)
signal man page (12551 hits) (Suse Linux 10.1)
startproc man page (11991 hits) (Suse Linux 10.1)
raidctl man page (11357 hits) (Solaris 10 11_06)
adv_cap_autoneg man page (10288 hits) (Solaris 10 11_06)
sqlite3 man page (9729 hits) (openSUSE 10.2)
CPAN man page (8947 hits) (Suse Linux 10.1)
BusyBox man page (7702 hits) (Suse Linux 10.1)
|