Man page - sigprocmask(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

sigprocmask

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
Différences entre bibliothÚque C et noyau
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

NOM

sigprocmask, rt_sigprocmask - Examiner et modifier les signaux bloqués

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <signal.h>

/* Prototype de la fonction enveloppe de la glibc */
int sigprocmask(int
how , const sigset_t *_Nullable restrict set ,
sigset_t *_Nullable restrict
oldset );

#include <signal.h> /* Définition des constantes SIG_* */
#include <sys/syscall.h>
/* Définition des constantes SYS_* */
#include <unistd.h>

/* 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 systĂšme antĂ©rieur */
[[obsolĂšte]] 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 fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

sigprocmask () :
_POSIX_C_SOURCE

DESCRIPTION

L’appel sigprocmask () est utilisĂ© pour rĂ©cupĂ©rer et/ou changer le masque de signaux du thread appelant. Le masque de signaux est l’ensemble des signaux dont la distribution est actuellement bloquĂ©e pour l’appelant (consultez Ă©galement signal (7) pour plus de dĂ©tails).

Son comportement est dépendant de la valeur de how , avec les conventions suivantes :
SIG_BLOCK

L’ensemble des signaux bloquĂ©s est l’union de l’ensemble actuel et de l’argument set .

SIG_UNBLOCK

Les signaux dans l’ensemble set sont supprimĂ©s de la liste des signaux bloquĂ©s. Il est permis de dĂ©bloquer un signal non bloquĂ©.

SIG_SETMASK

L’ensemble des signaux bloquĂ©s est Ă©gal Ă  l’argument set .

Si oldset n’est pas NULL, la valeur prĂ©cĂ©dente du masque de signaux est stockĂ©e dans oldset .

Si set est NULL, le masque de signaux n’est pas modifiĂ© ( how est donc ignorĂ©), mais la valeur actuelle du masque de signaux est tout de mĂȘme renvoyĂ©e 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 décrit dans sigsetops (3).

L’utilisation de sigprocmask () dans un processus multithreadĂ© n’est pas dĂ©finie ; consultez pthread_sigmask (3).

VALEUR RENVOYÉE

sigprocmask () renvoie 0 s’il rĂ©ussit. En cas d’échec, -1 est renvoyĂ© et errno est positionnĂ© pour indiquer l’erreur.

ERREURS

EFAULT

L’un des paramĂštres set ou oldset pointe vers une zone mĂ©moire n’appartenant pas Ă  l’espace d’adressage allouĂ© du processus.

EINVAL

Soit la valeur indiquĂ©e dans how n’est pas valable, soit le noyau ne prend pas en charge la taille passĂ©e Ă  sigsetsize.

VERSIONS

Différences entre bibliothÚque C et noyau

La dĂ©finition du noyau de sigset_t diffĂšre par la taille de celle utilisĂ©e par la bibliothĂšque C. Dans cette page de manuel, on fait rĂ©fĂ©rence Ă  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 rĂ©el utilisĂ©s en interne par l’implĂ©mentation de threading NPTL. Consultez nptl (7) pour des dĂ©tails.

L’appel systĂšme Linux d’origine s’appelait sigprocmask (). Toutefois, avec l’arrivĂ©e des signaux en temps rĂ©el dans Linux 2.2 et de la taille figĂ©e, le type sigset_t 32 bits (dĂ©signĂ© comme old_kernel_sigset_t dans cette page de manuel), pris en charge par cet appel systĂšme ne convenait plus Ă  cet objectif. Par consĂ©quent, un nouvel appel systĂšme rt_sigprocmask (), a Ă©tĂ© ajoutĂ© pour prendre en charge le type sigset_t Ă©largi (dĂ©signĂ© comme kernel_sigset_t dans cette page de manuel). Le nouvel appel systĂšme prend un quatriĂšme paramĂštre, size_t sigsetsize , qui indique la taille en octets des jeux de signaux dans set et dans oldset . Ce paramĂštre est actuellement nĂ©cessaire pour obtenir une valeur fixe spĂ©cifique Ă  l’architecture (Ă©quivalente Ă  sizeof(kernel_sigset_t) ).

La fonction enveloppe sigprocmask () de la glibc nous cache ces détails, en appelant de maniÚre 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 ignorĂ©es silencieusement.

Chacun des threads d’un processus a son propre masque de signaux.

Un processus enfant créé avec fork (2) hĂ©rite d’une copie du masque de signaux de son parent. Le masque de signaux est conservĂ© au travers d’un execve (2).

Si l’un des signaux SIGBUS , SIGFPE , SIGILL ou SIGSEGV est gĂ©nĂ©rĂ© alors qu’il est bloquĂ©, le rĂ©sultat est indĂ©fini, sauf si le signal a Ă©tĂ© gĂ©nĂ©rĂ© par kill (2), sigqueue (3) ou raise (3).

Consultez sigsetops (3) pour les détails 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 française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com>, Frédéric Hantrais <fhantrais@gmail.com> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .