SIGVEC(3) Linux Programmer's Manual SIGVEC(3)
NAME
sigvec, sigblock, sigsetmask, siggetmask, sigmask - BSD signal API
SYNOPSIS
#define _BSD_SOURCE
#include <signal.h>
int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec);
int sigmask(int signum);
int sigblock(int mask);
int sigsetmask(int mask);
int siggetmask(void);
DESCRIPTION
These functions are provided in glibc as a compatibility interface for programs
that make use of the historical BSD signal API. This API is obsolete: new applica-
tions should use the POSIX signal API (sigaction(2), sigprocmask(2), etc.)
The sigvec() function sets and/or gets the disposition of the signal sig (like the
POSIX sigaction(2)). If vec is not NULL, it points to a sigvec structure that
defines the new disposition for sig. If ovec is not NULL, it points to a sigvec
structure that is used to return the previous disposition of sig. To obtain the
current disposition of sig without changing it, specify NULL for vec, and a non-
NULL pointer for ovec.
The dispositions for SIGKILL and SIGSTOP cannot be changed.
The sigvec structure has the following form:
struct sigvec {
void (*sv_handler)(); /* Signal disposition */
int sv_mask; /* Signals to be blocked in handler */
int sv_flags; /* Flags */
};
The sv_handler field specifies the disposition of the signal, and is either: the
address of a signal handler function; or SIG_DFL meaning the default disposition
applies for the signal; or SIG_IGN meaning that the signal is ignored.
If sv_handler specifies the address of a signal handler, then sv_mask specifies a
mask of signals that are to be blocked while the handler is executing. In addi-
tion, the signal for which the handler is invoked is also blocked by default.
Attempts to block SIGKILL or SIGSTOP are silently ignored.
If sv_handler specifies the address of a signal handler, then the sv_flags field
specifies flags controlling what happens when the handler is called. This field
may contain zero or more of the following flags:
SV_INTERRUPT
If the signal handler interrupts a blocking system call, then upon return
from the handler the system call will not be restarted: instead it will fail
with the error EINTR. If this flag is not specified, then system calls are
restarted by default.
SV_RESETHAND
Reset the disposition of the signal to the default before calling the signal
handler. If this flag is not specified, then the handler remains estab-
lished until explicitly removed by a later call to sigvec() or until the
process performs an execve(2).
SV_ONSTACK
Handle the signal on the alternate signal stack (historically established
under BSD using the obsolete sigstack() function; the POSIX replacement is
sigaltstack()).
The sigmask() function constructs and returns a "signal mask" for signum. For
example, we can initialise the vec.sv_mask field given to sigvec() using code such
as the following:
vec.sv_mask = sigmask(SIGQUIT) | sigpause (SIGABRT);
/* Block SIGQUIT and SIGABRT during
handler execution */
The sigblock() function adds the signals in mask to the process's signal mask (like
POSIX sigprocmask(SIG_BLOCK)), and returns the process's previous signal mask.
Attempts to block SIGKILL or SIGSTOP are silently ignored.
The sigsetmask() function sets the process's signal mask to the value given in mask
(like POSIX sigprocmask(SIG_SETMASK)), and returns the process's previous signal
mask.
The siggetmask() function returns the process's current signal mask. This call is
equivalent to sigblock(0).
RETURN VALUE
The sigvec() function returns 0 on success; on error, it returns -1 and sets errno
to indicate the error.
The sigblock() and sigsetmask() functions return the previous signal mask.
The sigmask() function returns the signal mask for signum.
ERRORS
See the ERRORS under sigaction(2) and sigprocmask(2).
NOTES
On 4.3BSD, the signal() function provided reliable semantics (as when calling
sigvec() with vec.sv_mask equal to 0). On System V, signal() provides unreliable
semantics. POSIX.1-2001 leaves these aspects of signal() unspecified. See sig-
nal(2) for further details.
In order to wait for a signal, BSD and System V both provided a function named sig-
pause(), but this function has a different argument on the two systems. See sig-
pause(3) for details.
CONFORMING TO
All of these functions were in 4.3BSD, except siggetmask(), whose origin is
unclear. These functions are obsolete: do not use them in new programs.
SEE ALSO
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3), sigpause(3),
sigset(3), signal(7)
Linux 2.6.14 2005-12-01 SIGVEC(3)
Generated by $Id: phpMan.php,v 4.54 2007/08/21 09:05:22 chedong Exp $ Author: Che Dong
On Apache/2.2.3 (Red Hat)
Under GNU General Public License
2009-12-24 02:08 @127.0.0.1 CrawledBy CCBot/1.0 (+http://www.commoncrawl.org/bot.html)