mirror of https://github.com/mkerrisk/man-pages
213 lines
4.6 KiB
Groff
213 lines
4.6 KiB
Groff
|
'\" t
|
||
|
.\" Copyright (c) 2005 by Michael Kerrisk <mtk-manpages@gmx.net>
|
||
|
.\"
|
||
|
.\" Permission is granted to make and distribute verbatim copies of this
|
||
|
.\" manual provided the copyright notice and this permission notice are
|
||
|
.\" preserved on all copies.
|
||
|
.\"
|
||
|
.\" Permission is granted to copy and distribute modified versions of this
|
||
|
.\" manual under the conditions for verbatim copying, provided that the
|
||
|
.\" entire resulting derived work is distributed under the terms of a
|
||
|
.\" permission notice identical to this one.
|
||
|
.\"
|
||
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
||
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
||
|
.\" responsibility for errors or omissions, or for damages resulting from
|
||
|
.\" the use of the information contained herein.
|
||
|
.\"
|
||
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||
|
.\"
|
||
|
.TH SIGSET 2 2005-12-01 "Linux 2.6.14" "Linux Programmer's Manual"
|
||
|
.SH NAME
|
||
|
sigset, sighold, sigrelse, sigignore \- System V signal API
|
||
|
.SH SYNOPSIS
|
||
|
.B #define _XOPEN_SOURCE 500
|
||
|
.br
|
||
|
.B #include <signal.h>
|
||
|
.sp
|
||
|
.B typedef void (*sighandler_t)(int);
|
||
|
.sp
|
||
|
.BI "sighandler_t sigset(int " sig ", sighandler_t " disp );
|
||
|
.sp
|
||
|
.BI "int sighold(int " sig );
|
||
|
.sp
|
||
|
.BI "int sigrelse(int " sig );
|
||
|
.sp
|
||
|
.BI "int sigignore(int " sig );
|
||
|
.SH DESCRIPTION
|
||
|
These functions are provided in glibc as a compatibility interface
|
||
|
for programs that make use of the historical System V signal API.
|
||
|
This API is obsolete: new applications should use the POSIX signal API
|
||
|
.RB ( sigaction (2),
|
||
|
.BR sigprocmask (2),
|
||
|
etc.)
|
||
|
|
||
|
The
|
||
|
.BR sigset ()
|
||
|
function modifies the disposition of the signal
|
||
|
.IR sig .
|
||
|
The
|
||
|
.I disp
|
||
|
argument can be the address of a signal handler function,
|
||
|
or one of the following constants:
|
||
|
.TP
|
||
|
.BR SIG_DFL
|
||
|
Reset the disposition of
|
||
|
.I sig
|
||
|
to the default.
|
||
|
.TP
|
||
|
.BR SIG_IGN
|
||
|
Ignore
|
||
|
.IR sig .
|
||
|
.TP
|
||
|
.BR SIG_HOLD
|
||
|
Add
|
||
|
.I sig
|
||
|
to the process's signal mask, but leave the disposition of
|
||
|
.I sig
|
||
|
unchanged.
|
||
|
.PP
|
||
|
If
|
||
|
.I disp
|
||
|
specifies the address of a signal handler, then
|
||
|
.I sig
|
||
|
is added to the process's signal mask during execution of the handler.
|
||
|
.PP
|
||
|
If
|
||
|
.I disp
|
||
|
was specified as a value other than
|
||
|
.BR SIG_HOLD
|
||
|
the
|
||
|
.I sig
|
||
|
is removed from the process's signal mask.
|
||
|
.\" FIXME But this case is broken in glibc 2.3.5!
|
||
|
.PP
|
||
|
The dispositions for
|
||
|
.B SIGKILL
|
||
|
and
|
||
|
.B SIGSTOP
|
||
|
cannot be changed.
|
||
|
.PP
|
||
|
The
|
||
|
.BR sighold ()
|
||
|
function adds
|
||
|
.I sig
|
||
|
to the calling process's signal mask.
|
||
|
|
||
|
The
|
||
|
.BR sigrelse ()
|
||
|
function removes
|
||
|
.I sig
|
||
|
from the calling process's signal mask.
|
||
|
|
||
|
The
|
||
|
.BR sigignore ()
|
||
|
function sets the disposition of
|
||
|
.I sig
|
||
|
to
|
||
|
.BR SIG_IGN .
|
||
|
.SH RETURN VALUE
|
||
|
On success,
|
||
|
.BR sigset ()
|
||
|
returns
|
||
|
.B SIG_HOLD
|
||
|
if
|
||
|
.I sig
|
||
|
was blocked before the call,
|
||
|
or the signal's previous disposition
|
||
|
if it was not blocked before the call.
|
||
|
On error,
|
||
|
.BR sigset ()
|
||
|
returns \-1, with
|
||
|
.I errno
|
||
|
set to indicate the error.
|
||
|
.\" FIXME But as at 2.3.5, glibc's sigset() is broken for the SIG_HOLD case:
|
||
|
.\" it will only return SIG_HOLD if 'disp' is SIG_HOLD; if the signal is
|
||
|
.\" blocked, then sigset() should return SIG_HOLD even if 'disp' is
|
||
|
.\" specified as something other than SIG_HOLD (I have tested this
|
||
|
.\" on Solaris 8 and HP-UX 11).
|
||
|
.\" -- mtk, 29 Nov 05
|
||
|
The
|
||
|
.BR sighold (),
|
||
|
.BR sigrelse (),
|
||
|
and
|
||
|
.BR sigignore ()
|
||
|
functions return 0 on success; on error, these functions return \-1 and set
|
||
|
.I errno
|
||
|
to indicate the error.
|
||
|
.SH ERRORS
|
||
|
For
|
||
|
.BR sigset ()
|
||
|
see the ERRORS under
|
||
|
.BR sigaction (2)
|
||
|
and
|
||
|
.BR sigprocmask (2).
|
||
|
|
||
|
For
|
||
|
.BR sighold ()
|
||
|
and
|
||
|
.BR sigrelse ()
|
||
|
see the ERRORS under
|
||
|
.BR sigprocmask (2).
|
||
|
|
||
|
For
|
||
|
.BR sigignore (),
|
||
|
see the errors under
|
||
|
.BR sigaction (2).
|
||
|
.SH NOTES
|
||
|
The
|
||
|
.I sighandler_t
|
||
|
type is a GNU extension; it is only used on this page to make the
|
||
|
.BR sigset ()
|
||
|
prototype more easily readable.
|
||
|
|
||
|
The
|
||
|
.BR sigset ()
|
||
|
provides reliable signal handling semantics
|
||
|
(as when calling
|
||
|
.BR sigaction ()
|
||
|
with
|
||
|
.I sa_mask
|
||
|
equal to 0.
|
||
|
|
||
|
On System V, the
|
||
|
.BR signal ()
|
||
|
function provides unreliable semantics
|
||
|
(as when calling
|
||
|
.BR sigaction ()
|
||
|
with
|
||
|
.I sa_mask
|
||
|
equal to
|
||
|
.IR "SA_RESETHAND | SA_NODEFER" ).
|
||
|
On BSD,
|
||
|
.BR signal ()
|
||
|
provides reliable semantics.
|
||
|
POSIX.1-2001 leaves these aspects of
|
||
|
.BR signal ()
|
||
|
unspecified.
|
||
|
See
|
||
|
.BR signal (2)
|
||
|
for further details.
|
||
|
|
||
|
In order to wait for a signal,
|
||
|
BSD and System V both provided a function named
|
||
|
.BR sigpause (),
|
||
|
but this function has a different argument on the two systems.
|
||
|
See
|
||
|
.BR sigpause (3)
|
||
|
for details.
|
||
|
.SH "CONFORMING TO"
|
||
|
SVr4.
|
||
|
These functions are obsolete: do not use them in new programs.
|
||
|
.SH "SEE ALSO"
|
||
|
.BR kill (2),
|
||
|
.BR pause (2),
|
||
|
.BR sigaction (2),
|
||
|
.BR signal (2),
|
||
|
.BR sigprocmask (2),
|
||
|
.BR raise (3),
|
||
|
.BR sigpause (3),
|
||
|
.BR sigvec (3),
|
||
|
.BR signal (7)
|