CINXE.COM

sigprocmask

<html> <head> <title>sigprocmask</title> <META NAME="KEYWORDS" CONTENT="sigprocmask"> </head> <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#0000ff" ALINK="#0000ff" TEXT="#000000"> <center> <h1><b>sigprocmask</b></h1></center> <PRE> <STRONG><A HREF="/man2/SIGPROCMASK">SIGPROCMASK(2)</A></STRONG> Linux Programmer's Manual <STRONG><A HREF="/man2/SIGPROCMASK">SIGPROCMASK(2)</A></STRONG> NAME sigprocmask, rt_sigprocmask - examine and change blocked signals SYNOPSIS #include &lt;signal.h&gt; /* Prototype for the glibc wrapper function */ int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); /* Prototype for the underlying system call */ int rt_sigprocmask(int how, const kernel_sigset_t *set, kernel_sigset_t *oldset, size_t sigsetsize); /* Prototype for the legacy system call (deprecated) */ int sigprocmask(int how, const old_kernel_sigset_t *set, old_kernel_sigset_t *oldset); Feature Test Macro Requirements for glibc (see <STRONG><A HREF="/man7/feature_test_macros">feature_test_macros(7)</A></STRONG>): sigprocmask(): _POSIX_C_SOURCE DESCRIPTION sigprocmask() is used to fetch and/or change the signal mask of the calling thread. The signal mask is the set of signals whose delivery is currently blocked for the caller (see also <STRONG><A HREF="/man7/signal">signal(7)</A></STRONG> for more de- tails). The behavior of the call is dependent on the value of how, as follows. SIG_BLOCK The set of blocked signals is the union of the current set and the set argument. SIG_UNBLOCK The signals in set are removed from the current set of blocked signals. It is permissible to attempt to unblock a signal which is not blocked. SIG_SETMASK The set of blocked signals is set to the argument set. If oldset is non-NULL, the previous value of the signal mask is stored in oldset. If set is NULL, then the signal mask is unchanged (i.e., how is ig- nored), but the current value of the signal mask is nevertheless re- turned in oldset (if it is not NULL). A set of functions for modifying and inspecting variables of type sigset_t ("signal sets") is described in <STRONG><A HREF="/man3/sigsetops">sigsetops(3)</A></STRONG>. The use of sigprocmask() is unspecified in a multithreaded process; see <STRONG><A HREF="/man3/pthread_sigmask">pthread_sigmask(3)</A></STRONG>. RETURN VALUE sigprocmask() returns 0 on success and -1 on error. In the event of an error, errno is set to indicate the cause. ERRORS EFAULT The set or oldset argument points outside the process's allo- cated address space. EINVAL Either the value specified in how was invalid or the kernel does not support the size passed in sigsetsize. CONFORMING TO POSIX.1-2001, POSIX.1-2008. NOTES It is not possible to block SIGKILL or SIGSTOP. Attempts to do so are silently ignored. Each of the threads in a process has its own signal mask. A child created via <STRONG><A HREF="/man2/fork">fork(2)</A></STRONG> inherits a copy of its parent's signal mask; the signal mask is preserved across <STRONG><A HREF="/man2/execve">execve(2)</A></STRONG>. If SIGBUS, SIGFPE, SIGILL, or SIGSEGV are generated while they are blocked, the result is undefined, unless the signal was generated by <STRONG><A HREF="/man2/kill">kill(2)</A></STRONG>, <STRONG><A HREF="/man3/sigqueue">sigqueue(3)</A></STRONG>, or <STRONG><A HREF="/man3/raise">raise(3)</A></STRONG>. See <STRONG><A HREF="/man3/sigsetops">sigsetops(3)</A></STRONG> for details on manipulating signal sets. Note that it is permissible (although not very useful) to specify both set and oldset as NULL. C library/kernel differences The kernel's definition of sigset_t differs in size from that used by the C library. In this manual page, the former is referred to as ker- nel_sigset_t (it is nevertheless named sigset_t in the kernel sources). The glibc wrapper function for sigprocmask() silently ignores attempts to block the two real-time signals that are used internally by the NPTL threading implementation. See <STRONG><A HREF="/man7/nptl">nptl(7)</A></STRONG> for details. The original Linux system call was named sigprocmask(). However, with the addition of real-time signals in Linux 2.2, the fixed-size, 32-bit sigset_t (referred to as old_kernel_sigset_t in this manual page) type supported by that system call was no longer fit for purpose. Conse- quently, a new system call, rt_sigprocmask(), was added to support an enlarged sigset_t type (referred to as kernel_sigset_t in this manual page). The new system call takes a fourth argument, size_t sigsetsize, which specifies the size in bytes of the signal sets in set and oldset. This argument is currently required to have a fixed architecture spe- cific value (equal to sizeof(kernel_sigset_t)). The glibc sigprocmask() wrapper function hides these details from us, transparently calling rt_sigprocmask() when the kernel provides it. SEE ALSO <STRONG><A HREF="/man2/kill">kill(2)</A></STRONG>, <STRONG><A HREF="/man2/pause">pause(2)</A></STRONG>, <STRONG><A HREF="/man2/sigaction">sigaction(2)</A></STRONG>, <STRONG><A HREF="/man2/signal">signal(2)</A></STRONG>, <STRONG><A HREF="/man2/sigpending">sigpending(2)</A></STRONG>, sigsus- <STRONG><A HREF="/man2/pend">pend(2)</A></STRONG>, <STRONG><A HREF="/man3/pthread_sigmask">pthread_sigmask(3)</A></STRONG>, <STRONG><A HREF="/man3/sigqueue">sigqueue(3)</A></STRONG>, <STRONG><A HREF="/man3/sigsetops">sigsetops(3)</A></STRONG>, <STRONG><A HREF="/man7/signal">signal(7)</A></STRONG> COLOPHON This page is part of release 5.05 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. Linux 2017-09-15 <STRONG><A HREF="/man2/SIGPROCMASK">SIGPROCMASK(2)</A></STRONG></PRE> <center> <h6>Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2025 <a href="http://www.he.net">Hurricane Electric</a>. All Rights Reserved.</h6></center> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10