Next: L'attente d'un signal Up: La norme POSIX Previous: Le blocage des signaux

sigaction

La structure sigaction décrit le comportement utilisé pour le traitement d'un signal:

struct sigaction { 
        void (*sa_handler) ();  
        sigset_t sa_mask;
        int sa_flags;}
sa_handler
fonction de traitement (ou SIG_DFL et SIG_IGN)
sa_mask
ensemble de signaux supplémentaires à bloquer pendant le traitement
sa_flags
différentes options

SA_NOCLDSTOP
le signal SIGCHLD n'est pas envoyé à un processus lorsque l'un de ses fils est stoppé.
SA_RESETHAND
simulation de l'ancienne méthode de gestion des signaux, pas de blocage du signal pendant le handler et repositionnement du handler par défaut au lancement du handler.
SA_RESTART
les appels système interrompus par un signal capté sont relancés au lieu de renvoyer -1. Cet indicateur joue le rôle de l'appel siginterrupt(sig, 0) des versions BSD.
SA_NOCLDWAIT
si le signal est SIGCHLD, ses fils qui se terminent ne deviennent pas zombis. Cet indicateur correspond au comportement des processus pour SIG_IGN dans les versions ATT.

Le positionnement du comportement de reception d'un signal se fait par la primitive sigaction.
L'installation d'une fonction de traitement du signal SIGCHLD peut avoir pour effet d'envoyer un signal au processus, ceci dans le cas où le processus a des fils zombis, c'est toujours le problème lié à ce signal qui n'a pas le même comportement que les autres signaux.
Un handler positionné par sigaction reste jusqu'à ce qu'un autre handler soit positionné, à la différence des versions ATT où le handler par défaut est repositionné automatiquement au début du traitement du signal.

        #include <signal.h>
        int sigaction(int sig,
                      const struct sigaction *paction,
                      struct sigaction       *paction_precedente);
Cette fonction réalise soit une demande d'information. Si le pointeur paction est null, on obtient la structure sigaction courante. Sinon c'est une demande de modification du comportement.



Dominique REVUZ
Mon Feb 2 12:10:31 MET 1998
Une Bug Un mail Merci