.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_sigmask 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ pthread_sigmask \- проверяет и изменяет маску заблокированных сигналов .SH LIBRARY POSIX threads library (\fIlibpthread\fP, \fI\-lpthread\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint pthread_sigmask(int \fP\fIhow\fP\fB, const sigset_t *\fP\fIset\fP\fB, sigset_t *\fP\fIoldset\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBpthread_sigmask\fP(): .nf _POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500 .fi .SH ОПИСАНИЕ Функция \fBpthread_sigmask\fP() подобна \fBsigprocmask\fP(2), но используется в многонитевых программах, что явно указано в POSIX.1. Другие отличия приведены в этой странице. .PP Описание аргументов и работы функции смотрите в \fBsigprocmask\fP(2). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBpthread_sigmask\fP() возвращается 0; при ошибке возвращается номер ошибки. .SH ОШИБКИ Смотрите \fBsigprocmask\fP(2). .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBpthread_sigmask\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH ЗАМЕЧАНИЯ Новая нить наследует копию маски сигналов своего создателя. .PP Функция glibc \fBpthread_sigmask\fP() просто игнорирует попытки блокирования двух сигналов реального времени, которые используются внутри реализации NPTL. Подробности смотрите в \fBnptl\fP(7). .SH ПРИМЕРЫ Показанная далее программа блокирует некоторые сигналы в главной нити, а затем создаёт отдельную нить для получения этих сигналов с помощью \fBsigwait\fP(3). Пример работы программы: .PP .in +4n .EX $\fB ./a.out &\fP [1] 5423 $\fB kill \-QUIT %1\fP Нить обработки сигналов получила сигнал 3 $\fB kill \-USR1 %1\fP Нить обработки сигналов получила сигнал 10 $\fB kill \-TERM %1\fP [1]+ Terminated ./a.out .EE .in .SS "Исходный код программы" .\" SRC BEGIN (pthread_sigmask.c) \& .EX #include #include #include #include #include #include \& /* Simple error handling functions */ \& #define handle_error_en(en, msg) \e 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\en", 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 */ } .EE .\" SRC END .SH "СМ. ТАКЖЕ" \fBsigaction\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBpthread_attr_setsigmask_np\fP(3), \fBpthread_create\fP(3), \fBpthread_kill\fP(3), \fBsigsetops\fP(3), \fBpthreads\fP(7), \fBsignal\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov , kogamatranslator49 , Kogan, Max Is , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .