NOM
sigvec, sigblock, sigsetmask, siggetmask, sigmask - API signaux BSD
SYNOPSIS
#include <signal.h>
int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec);
int sigmask(int signum);
int sigblock(int mask);
int sigsetmask(int mask);
int siggetmask(void);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
Toutes les fonctions ci-dessus : _BSD_SOURCE
Ces fonctions sont fournies dans la glibc comme interface de
compatibilité pour les programmes qui utilisent l’API signaux BSD
historique. Cette API est obsolète, les nouvelles applications
devraient utiliser l’API signaux POSIX (sigaction(2), sigprocmask(2),
etc.).
La fonction sigvec() configure et/ou récupère le dispositif du signal
sig (comme l’appel POSIX sigaction(2)). Si vec n’est pas NULL, il
pointe sur une structure sigvec qui définit le nouveau dispositif pour
sig. Si ovec n’est pas NULL, il pointe sur une structure sigvec qui est
utilisée pour renvoyer le dispositif précédent de sig. Pour obtenir le
dispositif courant de sig sans le modifier, vous devez spécifier NULL
pour vec, et un pointeur non NULL pour ovec.
Les dispositifs pour SIGKILL et SIGSTOP ne peuvent pas être modifiés.
La structure sigvec à la forme suivante :
struct sigvec {
void (*sv_handler)(); /* Dispositif du signal*/
int sv_mask; /* Signaux à bloquer dans le gestionnaire */
int sv_flags; /* Drapeaux */
};
Le champ sv_handler spécifie le dispositif du signal et est soit
l’adresse de la fonction gestionnaire de signal, soit SIG_DFL
signifiant que le dispositif par défaut s’applique au signal, soit
SIG_IGN signifiant que le signal est ignoré.
Si sv_handler spécifie l’adresse d’un gestionnaire de signal, sv_mask
spécifie un masque de signaux qui seront bloqués pendant que le
gestionnaire s’exécute. De plus, le signal pour lequel le gestionnaire
est appelé est également bloqué par défaut. Toute tentative de bloquer
SIGKILL ou SIGSTOP est silencieusement ignorée.
Si sv_handler spécifie l’adresse d’un gestionnaire de signal, le champ
sv_flags spécifie des attributs contrôlant ce qui se passe lorsque le
gestionnaire est appelé. Ce champ peut contenir zéro ou plus des
attributs suivants :
SV_INTERRUPT
Si le gestionnaire de signaux interrompt un appel système
bloquant, l’appel système ne sera pas relancé au retour du
gestionnaire. À la place, il échouera avec l’erreur EINTR. Si
cet attribut n’est pas spécifié, les appels système sont
relancés par défaut.
SV_RESETHAND
Réinitialiser le dispositif du signal à sa valeur par défaut
avant d’appeler le gestionnaire de signaux. Si cet attribut
n’est pas spécifié, le gestionnaire reste positionné jusqu’à ce
qu’il soit explicitement supprimé par un appel ultérieur à
sigvec() ou jusqu’à ce que le processus effectue un execve(2).
SV_ONSTACK
Gère le signal sur la pile de signaux spécifique (historiquement
positionné sous BSD avec la fonction obsolète sigstack() ; la
fonction POSIX qui la remplace est sigaltstack(2)).
La fonction sigmask() construit et renvoie un masque de signaux pour
signum. Par exemple, on peut initialiser le champ vec.sv_mask passé à
sigvec() avec un code tel que le suivant :
vec.sv_mask = sigmask(SIGQUIT) | sigpause(SIGABRT);
/* Bloquer SIGQUIT et SIGABRT pendant
l’exécution du gestionnaire */
La fonction sigblock() ajoute les signaux de mask au masque de signaux
du processus (comme l’appel POSIX sigprocmask(SIG_BLOCK)), et renvoie
le masque de signaux précédent du processus. Toute tentative de bloquer
SIGKILL ou SIGSTOP est silencieusement ignorée.
La fonction sigsetmask() configure le masque de signaux du processus à
la valeur donnée dans mask (comme l’appel POSIX
sigprocmask(SIG_SETMASK)), et renvoie le masque de signaux précédent du
processus.
La fonction siggetmask() renvoie le masque de signaux courant du
processus. Cet appel est équivalent à sigblock(0).
VALEUR RENVOYÉE
Si elle réussit, la fonction sigvec() renvoie 0. Si elle échoue, elle
renvoie -1 et écrit errno pour indiquer l’erreur.
Les fonctions sigblock() et sigsetmask() renvoient le masque de signaux
précédent.
La fonction sigmask() renvoie le masque de signaux pour signum.
ERREURS
Voir la section ERREURS des pages de manuel sigaction(2) et
sigprocmask(2).
CONFORMITÉ
Toutes ces fonctions étaient dans BSD 4.3, excepté siggetmask(), dont
l’origine n’est pas claire. Ces fonctions sont obsolètes. Ne les
utilisez pas dans de nouveaux programmes.
NOTES
Sur BSD 4.3, la fonction signal() fournit une sémantique fiable (comme
lorsqu’on appelle sigvec() avec vec.sv_mask valant 0). Sur System V, la
fonction signal() fournit une sémantique non fiable. POSIX.1-2001
laisse ces aspects de signal() non spécifiés. Voir signal(2) pour plus
de détails.
Afin d’attendre un signal, BSD et System V fournissent tous les deux
une fonction nommée sigpause(3), mais cette fonction n’a pas le même
argument sur les deux systèmes. Voir sigpause(3) pour les détails.
VOIR AUSSI
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3),
sigpause(3), sigset(3), signal(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite par Alain Portal <aportal AT
univ-montp2 DOT fr> en 2006, et mise à disposition sur
http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Nicolas François
<nicolas.francois@centraliens.net> et l’équipe francophone de
traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».