table of contents
other sections
SIGVEC(3) | Manuel du programmeur Linux | SIGVEC(3) |
NOM¶
sigvec, sigblock, sigsetmask, siggetmask, sigmask - API signaux BSDSYNOPSIS¶
#include <signal.h>Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :
DESCRIPTION¶
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.).struct sigvec { void (*sv_handler)(int); /* 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é.
- 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)).
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.ERREURS¶
Consultez 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. Consultez signal(2) pour plus de 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.44 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>. Alain Portal <http://manpagesfr.free.fr/> (2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009). 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> ».6 septembre 2012 | Linux |