Signal (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Signal.
image illustrant l’informatique
Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Un signal est une forme limitée de communication entre processus utilisée par les systèmes de type Unix et ceux respectant les standards POSIX. Il s'agit d'une notification asynchrone envoyée à un processus pour lui signaler l'apparition d'un événement. Quand un signal est envoyé à un processus, le système d'exploitation interrompt l'exécution normale de celui-ci. Si le processus possède une routine de traitement pour le signal reçu, il lance son exécution. Dans le cas contraire, il exécute la routine de traitement des signaux par défaut.

La norme POSIX (et la documentation signal(7) de Linux) limite les fonctions directement ou indirectement appelables depuis cette routine de traitements des signaux. Par exemple malloc ou printf ne peuvent y être utilisés (à cause d'une possible interférence avec l'état global du programme). Plus précisément, cette norme donne une liste exhaustive de fonctions primitives dites async-signal safe (en pratique, les appels systèmes) qui sont les seules à pouvoir être appelées depuis une routine de traitement de signal sans avoir un comportement indéfini. Il est donc suggéré d'avoir une routine de traitement de signal qui positionne simplement un drapeau déclaré volatile sig_atomic_t qui serait testé ailleurs dans le programme.

Voir aussi[modifier | modifier le code]