Référence du fichier signal.h


Description détaillée

Cet entête contient les déclarations et définitions relatives aux traitements des signaux.

Les signaux sont des événements qui peuvent avoir lieu pendant l'exécution du programme. Ils peuvent être dus au programme -- une division par zéro par exemple -- auquel cas ils sont dits synchrones; ou déclanché par quelque chose d'externe -- l'appui sur une touche particulière -- auquel cas ils sont dits asynchrones.

Lors de la réception d'un signal, le programme peut exécuter un gestionnaire enregistré au préalable, ou a une action définie par l'implémentation si aucun gestionnaire n'est enregistré.

La norme garanti très peu de choses quant au signaux: ni qu'ils peuvent être générés autrement que par raise() et abort(), ni qu'on peut faire dans un gestionnaire autre chose que de lire et modifier des variables volatiles de type sig_atomic_t. En pratique, toute utilisation utilise des garanties plus fortes venant de l'implémentation (par exemple qu'elle est conforme à POSIX).


Macros

#define SIG_DFL
 gestion par défaut
#define SIG_IGN
 ignore
#define SIG_ERR
 erreur dans signal()
#define SIGABRT
 fin anormale
#define SIGFPE
 erreur dans une expression arithmétique
#define SIGILL
 erreur dans le code
#define SIGINT
 signal interactif
#define SIGSEGV
 accès à de la mémoire inaccessible
#define SIGTERM
 demande de fin du programme

Définition de type

typedef _integral sig_atomic_t
 type entier atomique

Fonctions

void(*)(int) signal (int sig, void(*handler)(int))
 enregistre un gestionnaire de signal
int raise (int sig)
 génère un signal


Documentation des macros

#define SIG_DFL

Valeur pouvant être enregistrée comme gestionnaire de signal indiquant à l'implémentation qu'elle doit avoir son comportement par défaut.

#define SIG_ERR

Valeur retournée par signal() en cas d'erreur.

#define SIG_IGN

Valeur pouvant être enregistrée comme gestionnaire de signal indiquant à l'implémentation que le signal doit être ignoré.

#define SIGABRT

Constante désignant un signal utilisé pour demander la fin anormale du programme (entre autre généré par abort()).

#define SIGFPE

Constante désignant un signal utilisé pour signaler une erreur arithmétique telle qu'une division par zéro ou un overflow.

#define SIGILL

Constante désignant un signal utilisé pour signaler une erreur dans le code exécutable.

#define SIGINT

Constante désignant un signal utilisé interactivement.

#define SIGSEGV

Constante désignant un signal utilisé pour signaler une erreur dans l'accès à la mémoire -- problème d'alignement, zone mémoire non présente dans le processus, ...

#define SIGTERM

Constante désignant un signal utilisé pour demander la fin du programme.


Documentation des définition de type

typedef _integral sig_atomic_t

Un type dont les objets peuvent être accédé de manière atomique même en présence de signaux asynchrones. Seuls les objets de ce type peuvent être lus ou modifiés dans les gestionnaires de signaux en étant sûr de ne pas interférer avec le reste du programme.


Documentation des fonctions

int raise ( int  sig  ) 

Envoie le signal sig au programme.

void(*)(int) signal ( int  sig,
void(*)(int)  handler 
)

Enregistre handler comme étant la fonction à appeler en cas de signal sig. handler peut être:

  • une fonction de prototype adéquat à appeler quand le signal a lieu,

  • SIG_DFL pour indiquer que le traitement doit être défini par l'implémentation

  • SIG_IGN pour indiquer que le signal doit être ignoré.


Copyright © 2008 -- 2009 Jean-Marc Bourguet Accueil Pages sur le C