sourCEntral - mobile manpages

pdf

sigvec

NOM

sigvec, sigblock, sigsetmask, siggetmask, sigmask - API signaux BSD

BIBLIOTHÈQUE

Bibliothèque C standard (libc, -lc)

SYNOPSIS

#include <signal.h>

int sigvec(int sig, const 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 (consulter feature_test_macros(7)) :

Pour toutes les fonctions ci-dessus :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE

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.).

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)(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é.

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é. 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

If the signal handler interrupts a blocking system call, then upon return from the handler the system call is not restarted: instead it fails with the error EINTR. If this flag is not specified, then system calls are restarted by default.

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 macro 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) | sigmask(SIGABRT);
/* Block SIGQUIT and SIGABRT during
handler execution */

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 macro sigmask() renvoie le masque de signaux pour signum.

ERREURS

Consultez la section ERREURS des pages de manuel sigaction(2) et sigprocmask(2).

VERSIONS

Starting with glibc 2.21, the GNU C library no longer exports the sigvec() function as part of the ABI. (To ensure backward compatibility, the glibc symbol versioning scheme continues to export the interface to binaries linked against older versions of the library.)

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

img

STANDARDS

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

On 4.3BSD, the signal() function provided reliable semantics (as when calling sigvec() with vec.sv_mask equal to 0). On System V, signal() provides unreliable semantics. POSIX.1 leaves these aspects of signal() unspecified. See signal(2) for further details.

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. Consultez 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)

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 DOT rafin AT laposte DOT net>, Thierry Vignaud <tvignaud AT mandriva DOT com>, François Micaux, Alain Portal <aportal AT univ-montp2 DOT fr>, Jean-Philippe Guérard <fevrier AT tigreraye DOT org>, Jean-Luc Coulon (f5ibh) <jean-luc DOT coulon AT wanadoo DOT fr>, Julien Cristau <jcristau AT debian DOT org>, Thomas Huriaux <thomas DOT huriaux AT gmail DOT com>, Nicolas François <nicolas DOT francois AT centraliens DOT net>, Florentin Duneau <fduneau AT gmail DOT com>, Simon Paillard <simon DOT paillard AT resel DOT enst-bretagne DOT fr>, Denis Barbier <barbier AT debian DOT org>, David Prévot <david AT tilapin DOT org>, Cédric Boutillier <cedric DOT boutillier AT gmail DOT com> et Frédéric Hantrais <fhantrais AT gmail DOT com>

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.

pdf