'\" t .\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH pthread_attr_setsigmask_np 3 2024-05-02 "Linux man-pages 6.9.1" .SH NAME pthread_attr_setsigmask_np, pthread_attr_getsigmask_np \- set/get signal mask attribute in thread attributes object .SH LIBRARY POSIX threads library .RI ( libpthread ", " \-lpthread ) .SH SYNOPSIS .nf .BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */" .B #include .P .BI "int pthread_attr_setsigmask_np(pthread_attr_t *" attr , .BI " const sigset_t *" sigmask ); .BI "int pthread_attr_getsigmask_np(const pthread_attr_t *" attr , .BI " sigset_t *" sigmask ); .fi .SH DESCRIPTION The .BR pthread_attr_setsigmask_np () function sets the signal mask attribute of the thread attributes object referred to by .I attr to the value specified in .IR *sigmask . If .I sigmask is specified as NULL, then any existing signal mask attribute in .I attr is unset. .P The .BR pthread_attr_getsigmask_np () function returns the signal mask attribute of the thread attributes object referred to by .I attr in the buffer pointed to by .IR sigmask . If the signal mask attribute is currently unset, then this function returns the special value .B PTHREAD_ATTR_NO_SIGMASK_NP as its result. .SH RETURN VALUE The .BR pthread_attr_setsigmask_np () function returns 0 on success, or a nonzero error number on failure. .P the .BR pthread_attr_getsigmask_np () function returns either 0 or .BR PTHREAD_ATTR_NO_SIGMASK_NP . When 0 is returned, the signal mask attribute is returned via .IR sigmask . A return value of .B PTHREAD_ATTR_NO_SIGMASK_NP indicates that the signal mask attribute is not set in .IR attr . .P On error, these functions return a positive error number. .SH ERRORS .TP .B ENOMEM .RB ( pthread_attr_setsigmask_np ()) Could not allocate memory. .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 pthread_attr_setsigmask_np (), .BR pthread_attr_getsigmask_np () T} Thread safety MT-Safe .TE .SH STANDARDS GNU; hence the suffix "_np" (nonportable) in the names. .SH HISTORY glibc 2.32. .SH NOTES The signal mask attribute determines the signal mask that will be assigned to a thread created using the thread attributes object .IR attr . If this attribute is not set, then a thread created using .I attr will inherit a copy of the creating thread's signal mask. .P For more details on signal masks, see .BR sigprocmask (2). For a description of a set of macros that can be used to manipulate and inspect signal sets, see .BR sigsetops (3). .P In the absence of .BR pthread_attr_setsigmask_np () it is possible to create a thread with a desired signal mask as follows: .IP \[bu] 3 The creating thread uses .BR pthread_sigmask (3) to save its current signal mask and set its mask to block all signals. .IP \[bu] The new thread is then created using .BR pthread_create (); the new thread will inherit the creating thread's signal mask. .IP \[bu] The new thread sets its signal mask to the desired value using .BR pthread_sigmask (3). .IP \[bu] The creating thread restores its signal mask to the original value. .P Following the above steps, there is no possibility for the new thread to receive a signal before it has adjusted its signal mask to the desired value. .SH SEE ALSO .BR sigprocmask (2), .BR pthread_attr_init (3), .BR pthread_sigmask (3), .BR pthreads (7), .BR signal (7)