pthread_sigmask(3) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES | STANDARDS | HISTORY | NOTES | EXAMPLES | SEE ALSO | COLOPHON

pthread_sigmask(3) Library Functions Manual pthread_sigmask(3)

NAME top

 pthread_sigmask - examine and change mask of blocked signals

LIBRARY top

 POSIX threads library (libpthread, -lpthread)

SYNOPSIS top

 #include <signal.h>
 int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset);
 Feature Test Macro Requirements for glibc (see
 feature_test_macros(7)):
 pthread_sigmask():
 _POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500

DESCRIPTION top

 The pthread_sigmask() function is just like sigprocmask(2), with
 the difference that its use in multithreaded programs is
 explicitly specified by POSIX.1. Other differences are noted in
 this page.
 For a description of the arguments and operation of this function,
 see sigprocmask(2).

RETURN VALUE top

 On success, pthread_sigmask() returns 0; on error, it returns an
 error number.

ERRORS top

 See sigprocmask(2).

ATTRIBUTES top

 For an explanation of the terms used in this section, see
 attributes(7).
 ┌──────────────────────────────────────┬───────────────┬─────────┐
 │ Interface Attribute Value │
 ├──────────────────────────────────────┼───────────────┼─────────┤
 │ pthread_sigmask() │ Thread safety │ MT-Safe │
 └──────────────────────────────────────┴───────────────┴─────────┘

STANDARDS top

 POSIX.1-2008.

HISTORY top

 POSIX.1-2001.

NOTES top

 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 threading implementation. See nptl(7) for details.

EXAMPLES top

 The program below blocks some signals in the main thread, and then
 creates a dedicated thread to fetch those signals via sigwait(3).
 The following shell session demonstrates its use:
 $ ./a.out &
 [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 <errno.h>
 #include <pthread.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 /* 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, &sig);
 if (s != 0)
 handle_error_en(s, "sigwait");
 printf("Signal handling thread got signal %d\n", sig);
 }
 }
 int
 main(void)
 {
 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(&set);
 sigaddset(&set, SIGQUIT);
 sigaddset(&set, SIGUSR1);
 s = pthread_sigmask(SIG_BLOCK, &set, NULL);
 if (s != 0)
 handle_error_en(s, "pthread_sigmask");
 s = pthread_create(&thread, NULL, &sig_thread, &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 top

 sigaction(2), sigpending(2), sigprocmask(2),
 pthread_attr_setsigmask_np(3), pthread_create(3), pthread_kill(3),
 sigsetops(3), pthreads(7), signal(7)

COLOPHON top

 This page is part of the man-pages (Linux kernel and C library
 user-space interface documentation) project. Information about
 the project can be found at 
 ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
 for this manual page, see
 ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
 This page was obtained from the tarball man-pages-6.10.tar.gz
 fetched from
 ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
 2025年02月02日. If you discover any rendering problems in this HTML
 version of the page, or you believe there is a better or more up-
 to-date source for the page, or you have corrections or
 improvements to the information in this COLOPHON (which is not
 part of the original manual page), send a mail to
 man-pages@man7.org
Linux man-pages 6.10 2024年07月23日 pthread_sigmask(3)

Pages that refer to this page: sigprocmask(2), pthread_attr_setsigmask_np(3), pthread_create(3), pthread_kill(3), pthread_sigqueue(3), sd_event_add_child(3), sd_event_add_signal(3), sigset(3), sigwait(3), nptl(7), pthreads(7), signal(7), signal-safety(7)



HTML rendering created 2025年02月02日 by Michael Kerrisk, author of The Linux Programming Interface.

For details of in-depth Linux/UNIX system programming training courses that I teach, look here.

Hosting by jambit GmbH.

Cover of TLPI

Web Analytics Made Easy - StatCounter

AltStyle によって変換されたページ (->オリジナル) /