sigprocmask(2) System Calls Manual sigprocmask(2) NOM sigprocmask, rt_sigprocmask - Examiner et modifier les signaux bloques BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Prototype de la fonction enveloppe de la glibc */ int sigprocmask(int how, const sigset_t *_Nullable restrict set, sigset_t *_Nullable restrict oldset); #include /* Definition des constantes SIG_* */ #include /* Definition des constantes SYS_* */ #include /* Prototype for the underlying system call */ int syscall(SYS_rt_sigprocmask, int how, const kernel_sigset_t *_Nullable set, kernel_sigset_t *_Nullable oldset, size_t sigsetsize); /* Prototype de l'appel systeme anterieur */ [[obsolete]] int syscall(SYS_sigprocmask, int how, const old_kernel_sigset_t *_Nullable set, old_kernel_sigset_t *_Nullable oldset); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : sigprocmask() : _POSIX_C_SOURCE DESCRIPTION L'appel sigprocmask() est utilise pour recuperer et/ou changer le masque de signaux du thread appelant. Le masque de signaux est l'ensemble des signaux dont la distribution est actuellement bloquee pour l'appelant (consultez egalement signal(7) pour plus de details). Son comportement est dependant de la valeur de how, avec les conventions suivantes : SIG_BLOCK L'ensemble des signaux bloques est l'union de l'ensemble actuel et de l'argument set. SIG_UNBLOCK Les signaux dans l'ensemble set sont supprimes de la liste des signaux bloques. Il est permis de debloquer un signal non bloque. SIG_SETMASK L'ensemble des signaux bloques est egal a l'argument set. Si oldset n'est pas NULL, la valeur precedente du masque de signaux est stockee dans oldset. Si set est NULL, le masque de signaux n'est pas modifie (how est donc ignore), mais la valeur actuelle du masque de signaux est tout de meme renvoyee dans oldset (s'il n'est pas NULL). Un ensemble de fonctions pour modifier et voir les variables de type sigset_t ("signal sets") est decrit dans sigsetops(3). L'utilisation de sigprocmask() dans un processus multithreade n'est pas definie ; consultez pthread_sigmask(3). VALEUR RENVOYEE sigprocmask() renvoie 0 s'il reussit. En cas d'echec, -1 est renvoye et errno est positionne pour indiquer l'erreur. ERREURS EFAULT L'un des parametres set ou oldset pointe vers une zone memoire n'appartenant pas a l'espace d'adressage alloue du processus. EINVAL Soit la valeur indiquee dans how n'est pas valable, soit le noyau ne prend pas en charge la taille passee a sigsetsize. VERSIONS Differences entre bibliotheque C et noyau La definition du noyau de sigset_t differe par la taille de celle utilisee par la bibliotheque C. Dans cette page de manuel, on fait reference a l'ancienne quand on dit kernel_sigset_t (elle s'appelle cependant sigset_t dans les sources du noyau). La fonction enveloppe sigprocmask() de la glibc ignore silencieusement les tentatives de blocage des deux signaux en temps reel utilises en interne par l'implementation de threading NPTL. Consultez nptl(7) pour des details. L'appel systeme Linux d'origine s'appelait sigprocmask(). Toutefois, avec l'arrivee des signaux en temps reel dans Linux 2.2 et de la taille figee, le type sigset_t 32 bits (designe comme old_kernel_sigset_t dans cette page de manuel), pris en charge par cet appel systeme ne convenait plus a cet objectif. Par consequent, un nouvel appel systeme rt_sigprocmask(), a ete ajoute pour prendre en charge le type sigset_t elargi (designe comme kernel_sigset_t dans cette page de manuel). Le nouvel appel systeme prend un quatrieme parametre, size_t sigsetsize, qui indique la taille en octets des jeux de signaux dans set et dans oldset. Ce parametre est actuellement necessaire pour obtenir une valeur fixe specifique a l'architecture (equivalente a sizeof(kernel_sigset_t)). La fonction enveloppe sigprocmask() de la glibc nous cache ces details, en appelant de maniere transparente rt_sigprocmask() quand le noyau le fournit. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001. NOTES Il est impossible de bloquer SIGKILL ou SIGSTOP avec l'appel sigprocmask. Les tentatives seront ignorees silencieusement. Chacun des threads d'un processus a son propre masque de signaux. Un processus enfant cree avec fork(2) herite d'une copie du masque de signaux de son parent. Le masque de signaux est conserve au travers d'un execve(2). Si l'un des signaux SIGBUS, SIGFPE, SIGILL ou SIGSEGV est genere alors qu'il est bloque, le resultat est indefini, sauf si le signal a ete genere par kill(2), sigqueue(3) ou raise(3). Consultez sigsetops(3) pour les details concernant les ensembles de signaux. Remarquez qu'il est acceptable (bien que peu utile) de renseigner tant set que oldset comme NULL. VOIR AUSSI kill(2), pause(2), sigaction(2), signal(2), sigpending(2), sigsuspend(2), pthread_sigmask(3), sigqueue(3), sigsetops(3), signal(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Cedric Boutillier , Frederic Hantrais et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 sigprocmask(2)