sigvec(3) Library Functions Manual sigvec(3) NOM sigvec, sigblock, sigsetmask, siggetmask, sigmask - API signaux BSD BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include [[deprecated]] int sigvec(int sig, const struct sigvec *vec, struct sigvec *ovec); [[deprecated]] int sigmask(int signum); [[deprecated]] int sigblock(int mask); [[deprecated]] int sigsetmask(int mask); [[deprecated]] int siggetmask(void); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : Pour toutes les fonctions ci-dessus : Depuis la glibc 2.19 : _DEFAULT_SOURCE glibc 2.19 et anterieures : _BSD_SOURCE DESCRIPTION Ces fonctions sont fournies dans la glibc comme interface de compatibilite pour les programmes qui utilisent l'API signaux BSD historique. Cette API est obsolete, les nouvelles applications devraient utiliser l'API signaux POSIX (sigaction(2), sigprocmask(2), etc.). La fonction sigvec() configure et/ou recupere le dispositif du signal sig (comme l'appel POSIX sigaction(2)). Si vec n'est pas NULL, il pointe sur une structure sigvec qui definit le nouveau dispositif pour sig. Si ovec n'est pas NULL, il pointe sur une structure sigvec qui est utilisee pour renvoyer le dispositif precedent de sig. Pour obtenir le dispositif courant de sig sans le modifier, vous devez specifier NULL pour vec, et un pointeur non NULL pour ovec. Les dispositifs pour SIGKILL et SIGSTOP ne peuvent pas etre modifies. La structure sigvec a la forme suivante : struct sigvec { void (*sv_handler)(int); /* Dispositif du signal*/ int sv_mask; /* Signaux a bloquer dans le gestionnaire */ int sv_flags; /* Drapeaux */ }; Le champ sv_handler specifie le dispositif du signal et est soit l'adresse de la fonction gestionnaire de signal, soit SIG_DFL signifiant que le dispositif par defaut s'applique au signal, soit SIG_IGN signifiant que le signal est ignore. Si sv_handler specifie l'adresse d'un gestionnaire de signal, sv_mask specifie un masque de signaux qui seront bloques pendant que le gestionnaire s'execute. De plus, le signal pour lequel le gestionnaire est appele est egalement bloque. Toute tentative de bloquer SIGKILL ou SIGSTOP est silencieusement ignoree. Si sv_handler specifie l'adresse d'un gestionnaire de signal, le champ sv_flags specifie des attributs controlant ce qui se passe lorsque le gestionnaire est appele. Ce champ peut contenir zero ou plus des attributs suivants : SV_INTERRUPT Si le gestionnaire de signaux interrompt un appel systeme bloquant, l'appel systeme ne sera pas relance au retour du gestionnaire. A la place, il echouera avec l'erreur EINTR. Si cet attribut n'est pas specifie, les appels systeme sont relances par defaut. SV_RESETHAND Reinitialiser le dispositif du signal a sa valeur par defaut avant d'appeler le gestionnaire de signaux. Si cet attribut n'est pas specifie, le gestionnaire reste positionne jusqu'a ce qu'il soit explicitement supprime par un appel ulterieur a sigvec() ou jusqu'a ce que le processus effectue un execve(2). SV_ONSTACK Gere le signal sur la pile de signaux specifique (historiquement positionne sous BSD avec la fonction obsolete sigstack() ; la fonction POSIX qui la remplace est sigaltstack(2)). La macro sigmask() construit et renvoie un masque de signaux pour signum. Par exemple, on peut initialiser le champ vec.sv_mask passe a sigvec() avec un code tel que le suivant : vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT); /* Bloquer SIGQUIT et SIGABRT pendant l'execution 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 precedent du processus. Toute tentative de bloquer SIGKILL ou SIGSTOP est silencieusement ignoree. La fonction sigsetmask() configure le masque de signaux du processus a la valeur donnee dans mask (comme l'appel POSIX sigprocmask(SIG_SETMASK)) et renvoie le masque de signaux precedent du processus. La fonction siggetmask() renvoie le masque de signaux courant du processus. Cet appel est equivalent a sigblock(0). VALEUR RENVOYEE Si elle reussit, la fonction sigvec() renvoie 0. Si elle echoue, elle renvoie -1 et definit errno pour indiquer l'erreur. Les fonctions sigblock() et sigsetmask() renvoient le masque de signaux precedent. La macro sigmask() renvoie le masque de signaux pour signum. ERREURS Consultez la section ERREURS des pages de manuel sigaction(2) et sigprocmask(2). ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |sigvec(), sigmask(), sigblock(), | Securite des threads | MT-Safe | |sigsetmask(), siggetmask() | | | +---------------------------------+--------------------------+---------+ STANDARDS None. HISTORIQUE sigvec() sigblock() sigmask() sigsetmask() 4.3BSD. siggetmask() Unclear origin. sigvec() Removed in glibc 2.21. NOTES Sur 4.3BSD, la fonction signal() fournit une semantique fiable (comme lorsqu'on appelle sigvec() avec vec.sv_mask valant 0). Sur System V, la fonction signal() fournit une semantique non fiable. POSIX.1 laisse ces aspects de signal() non specifies. Consultez signal(2) pour plus de details. Afin d'attendre un signal, BSD et System V fournissent tous les deux une fonction nommee sigpause(3), mais cette fonction n'a pas le meme argument sur les deux systemes. Consultez sigpause(3) pour les details. VOIR AUSSI kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3), sigpause(3), sigset(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-Pierre Giraud 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 sigvec(3)