summaryrefslogtreecommitdiffstats
path: root/man3/sigvec.3
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man3/sigvec.3283
1 files changed, 283 insertions, 0 deletions
diff --git a/man3/sigvec.3 b/man3/sigvec.3
new file mode 100644
index 0000000..c4529a8
--- /dev/null
+++ b/man3/sigvec.3
@@ -0,0 +1,283 @@
+'\" t
+.\" Copyright (c) 2005 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH sigvec 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+sigvec, sigblock, sigsetmask, siggetmask, sigmask \- BSD signal API
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <signal.h>
+.PP
+.BI "[[deprecated]] int sigvec(int " sig ", const struct sigvec *" vec ,
+.BI " struct sigvec *" ovec );
+.PP
+.BI "[[deprecated]] int sigmask(int " signum );
+.PP
+.BI "[[deprecated]] int sigblock(int " mask );
+.BI "[[deprecated]] int sigsetmask(int " mask );
+.B [[deprecated]] int siggetmask(void);
+.fi
+.PP
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+All functions shown above:
+.nf
+ Since glibc 2.19:
+ _DEFAULT_SOURCE
+ glibc 2.19 and earlier:
+ _BSD_SOURCE
+.fi
+.SH 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 applications should use the POSIX signal API
+.RB ( sigaction (2),
+.BR sigprocmask (2),
+etc.).
+.PP
+The
+.BR sigvec ()
+function sets and/or gets the disposition of the signal
+.I sig
+(like the POSIX
+.BR sigaction (2)).
+If
+.I vec
+is not NULL, it points to a
+.I sigvec
+structure that defines the new disposition for
+.IR sig .
+If
+.I ovec
+is not NULL, it points to a
+.I sigvec
+structure that is used to return the previous disposition of
+.IR sig .
+To obtain the current disposition of
+.I sig
+without changing it, specify NULL for
+.IR vec ,
+and a non-null pointer for
+.IR ovec .
+.PP
+The dispositions for
+.B SIGKILL
+and
+.B SIGSTOP
+cannot be changed.
+.PP
+The
+.I sigvec
+structure has the following form:
+.PP
+.in +4n
+.EX
+struct sigvec {
+ void (*sv_handler)(int); /* Signal disposition */
+ int sv_mask; /* Signals to be blocked in handler */
+ int sv_flags; /* Flags */
+};
+.EE
+.in
+.PP
+The
+.I sv_handler
+field specifies the disposition of the signal, and is either:
+the address of a signal handler function;
+.BR SIG_DFL ,
+meaning the default disposition applies for the signal; or
+.BR SIG_IGN ,
+meaning that the signal is ignored.
+.PP
+If
+.I sv_handler
+specifies the address of a signal handler, then
+.I sv_mask
+specifies a mask of signals that are to be blocked while
+the handler is executing.
+In addition, the signal for which the handler is invoked is
+also blocked.
+Attempts to block
+.B SIGKILL
+or
+.B SIGSTOP
+are silently ignored.
+.PP
+If
+.I sv_handler
+specifies the address of a signal handler, then the
+.I sv_flags
+field specifies flags controlling what happens when the handler is called.
+This field may contain zero or more of the following flags:
+.TP
+.B SV_INTERRUPT
+If the signal handler interrupts a blocking system call,
+then upon return from the handler the system call is not restarted:
+instead it fails with the error
+.BR EINTR .
+If this flag is not specified, then system calls are restarted
+by default.
+.TP
+.B 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 established
+until explicitly removed by a later call to
+.BR sigvec ()
+or until the process performs an
+.BR execve (2).
+.TP
+.B SV_ONSTACK
+Handle the signal on the alternate signal stack
+(historically established under BSD using the obsolete
+.BR sigstack ()
+function; the POSIX replacement is
+.BR sigaltstack (2)).
+.PP
+The
+.BR sigmask ()
+macro constructs and returns a "signal mask" for
+.IR signum .
+For example, we can initialize the
+.I vec.sv_mask
+field given to
+.BR sigvec ()
+using code such as the following:
+.PP
+.in +4n
+.EX
+vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT);
+ /* Block SIGQUIT and SIGABRT during
+ handler execution */
+.EE
+.in
+.PP
+The
+.BR sigblock ()
+function adds the signals in
+.I mask
+to the process's signal mask
+(like POSIX
+.IR sigprocmask(SIG_BLOCK) ),
+and returns the process's previous signal mask.
+Attempts to block
+.B SIGKILL
+or
+.B SIGSTOP
+are silently ignored.
+.PP
+The
+.BR sigsetmask ()
+function sets the process's signal mask to the value given in
+.I mask
+(like POSIX
+.IR sigprocmask(SIG_SETMASK) ),
+and returns the process's previous signal mask.
+.PP
+The
+.BR siggetmask ()
+function returns the process's current signal mask.
+This call is equivalent to
+.IR sigblock(0) .
+.SH RETURN VALUE
+The
+.BR sigvec ()
+function returns 0 on success; on error, it returns \-1 and sets
+.I errno
+to indicate the error.
+.PP
+The
+.BR sigblock ()
+and
+.BR sigsetmask ()
+functions return the previous signal mask.
+.PP
+The
+.BR sigmask ()
+macro returns the signal mask for
+.IR signum .
+.SH ERRORS
+See the ERRORS under
+.BR sigaction (2)
+and
+.BR sigprocmask (2).
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR sigvec (),
+.BR sigmask (),
+.BR sigblock (),
+.BR sigsetmask (),
+.BR siggetmask ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+None.
+.SH HISTORY
+.TP
+.BR sigvec ()
+.TQ
+.BR sigblock ()
+.TQ
+.BR sigmask ()
+.TQ
+.BR sigsetmask ()
+4.3BSD.
+.TP
+.BR siggetmask ()
+Unclear origin.
+.TP
+.BR sigvec ()
+Removed in glibc 2.21.
+.SH NOTES
+On 4.3BSD, the
+.BR signal ()
+function provided reliable semantics (as when calling
+.BR sigvec ()
+with
+.I vec.sv_mask
+equal to 0).
+On System V,
+.BR signal ()
+provides unreliable semantics.
+POSIX.1 leaves these aspects of
+.BR signal ()
+unspecified.
+See
+.BR signal (2)
+for further details.
+.PP
+In order to wait for a signal,
+BSD and System V both provided a function named
+.BR sigpause (3),
+but this function has a different argument on the two systems.
+See
+.BR sigpause (3)
+for details.
+.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 sigset (3),
+.BR signal (7)