CINXE.COM

pthread_sigmask

<html> <head> <title>pthread_sigmask</title> <META NAME="KEYWORDS" CONTENT="pthread_sigmask"> </head> <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#0000ff" ALINK="#0000ff" TEXT="#000000"> <center> <h1><b>pthread_sigmask</b></h1></center> <PRE> <STRONG><A HREF="/man3/PTHREAD_SIGMASK">PTHREAD_SIGMASK(3)</A></STRONG> Linux Programmer's Manual <STRONG><A HREF="/man3/PTHREAD_SIGMASK">PTHREAD_SIGMASK(3)</A></STRONG> NAME pthread_sigmask - examine and change mask of blocked signals SYNOPSIS #include &lt;signal.h&gt; int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset); Compile and link with -pthread. Feature Test Macro Requirements for glibc (see <STRONG><A HREF="/man7/feature_test_macros">feature_test_macros(7)</A></STRONG>): pthread_sigmask(): _POSIX_C_SOURCE &gt;= 199506L || _XOPEN_SOURCE &gt;= 500 DESCRIPTION The pthread_sigmask() function is just like <STRONG><A HREF="/man2/sigprocmask">sigprocmask(2)</A></STRONG>, with the difference that its use in multithreaded programs is explicitly speci- fied by POSIX.1. Other differences are noted in this page. For a description of the arguments and operation of this function, see <STRONG><A HREF="/man2/sigprocmask">sigprocmask(2)</A></STRONG>. RETURN VALUE On success, pthread_sigmask() returns 0; on error, it returns an error number. ERRORS See <STRONG><A HREF="/man2/sigprocmask">sigprocmask(2)</A></STRONG>. ATTRIBUTES For an explanation of the terms used in this section, see at- <STRONG><A HREF="/man7/tributes">tributes(7)</A></STRONG>. +------------------+---------------+---------+ |Interface | Attribute | Value | +------------------+---------------+---------+ |pthread_sigmask() | Thread safety | MT-Safe | +------------------+---------------+---------+ CONFORMING TO POSIX.1-2001, POSIX.1-2008. NOTES A new thread inherits a copy of its creator's signal mask. The glibc pthread_sigmask() function silently ignores attempts to block the two real-time signals that are used internally by the NPTL thread- ing implementation. See <STRONG><A HREF="/man7/nptl">nptl(7)</A></STRONG> for details. EXAMPLE The program below blocks some signals in the main thread, and then cre- ates a dedicated thread to fetch those signals via <STRONG><A HREF="/man3/sigwait">sigwait(3)</A></STRONG>. The following shell session demonstrates its use: $ ./a.out &amp; [1] 5423 $ kill -QUIT %1 Signal handling thread got signal 3 $ kill -USR1 %1 Signal handling thread got signal 10 $ kill -TERM %1 [1]+ Terminated ./a.out Program source #include &lt;pthread.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;unistd.h&gt; #include &lt;signal.h&gt; #include &lt;errno.h&gt; /* Simple error handling functions */ #define handle_error_en(en, msg) \ do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) static void * sig_thread(void *arg) { sigset_t *set = arg; int s, sig; for (;;) { s = sigwait(set, &amp;sig); if (s != 0) handle_error_en(s, "sigwait"); printf("Signal handling thread got signal %d\n", sig); } } int main(int argc, char *argv[]) { pthread_t thread; sigset_t set; int s; /* Block SIGQUIT and SIGUSR1; other threads created by main() will inherit a copy of the signal mask. */ sigemptyset(&amp;set); sigaddset(&amp;set, SIGQUIT); sigaddset(&amp;set, SIGUSR1); s = pthread_sigmask(SIG_BLOCK, &amp;set, NULL); if (s != 0) handle_error_en(s, "pthread_sigmask"); s = pthread_create(&amp;thread, NULL, &amp;sig_thread, (void *) &amp;set); if (s != 0) handle_error_en(s, "pthread_create"); /* Main thread carries on to create other threads and/or do other work */ pause(); /* Dummy pause so we can test program */ } SEE ALSO <STRONG><A HREF="/man2/sigaction">sigaction(2)</A></STRONG>, <STRONG><A HREF="/man2/sigpending">sigpending(2)</A></STRONG>, <STRONG><A HREF="/man2/sigprocmask">sigprocmask(2)</A></STRONG>, <STRONG><A HREF="/man3/pthread_create">pthread_create(3)</A></STRONG>, <STRONG><A HREF="/man3/pthread_kill">pthread_kill(3)</A></STRONG>, <STRONG><A HREF="/man3/sigsetops">sigsetops(3)</A></STRONG>, <STRONG><A HREF="/man7/pthreads">pthreads(7)</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 2019-03-06 <STRONG><A HREF="/man3/PTHREAD_SIGMASK">PTHREAD_SIGMASK(3)</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