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;}
Le positionnement du comportement de reception d'un signal se fait par la primitive sigaction.
- 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.
#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.