SIGNAL

Section: Manuel de l'administrateur Linux (7)
Updated: 25 juillet 2003
Index


NOM
DESCRIPTION
Signaux standards
Signaux temps-réel
CONFORMITÉ
BOGUES
VOIR AUSSI
TRADUCTION

NOM

signal - Liste des signaux disponibles.

DESCRIPTION

Linux supporte supporte à la fois les signaux POSIX classiques ("signaux standards") et les signaux POSIX temps-réel.

Signaux standards

Linux supporte les signaux standards indiqués ci-dessous. Plusieurs d'entre-eux dépendent de l'architecture, comme on le voit dans la colonne "Valeur". Lorsque trois valeurs sont indiquées, la première correspond normalement aux architectures Alpha et Sparc, la seconde pour les ix86, PPC et la dernière pour les Mips. Un - dénote un signal absent pour l'architecture correspondante.
Les symboles de la colonne "Action" ont la signification suivante :
Term
Par défaut, terminer le processus.
Ign
Par défaut, ignorer le signal.
Core
Par défaut, créer un fichier core et terminer le processus.
Stop
Par défaut arrêter le processus.

Voici tout d'abord les signaux décrits dans le standard Posix.1 original :

SignalValeurActionCommentaire





  
de contrôle, ou mort du processus

  
de contrôle.
SIGINT 2TermInterruption depuis le clavier.
SIGQUIT 3CoreDemande 'Quitter' depuis le clavier.
SIGILL 4CoreInstruction illégale.
SIGABRT 6CoreSignal d'arrêt depuis abort(3).
SIGFPE 8CoreErreur mathématique virgule flottante.
SIGKILL 9TermSignal 'KILL'.
SIGSEGV11CoreRéférence mémoire invalide.
SIGPIPE13TermÉcriture dans un tube sans lecteur.
SIGALRM14TermTemporisation alarm(2) écoulée.
SIGTERM15TermSignal de fin.
SIGUSR130,10,16TermSignal utilisateur 1.
SIGUSR231,12,17TermSignal utilisateur 2.
SIGCHLD20,17,18IgnFils arrêté ou terminé.
SIGCONT19,18,25Continuer si arrêté.
SIGSTOP17,19,23StopArrêt du processus.
SIGTSTP18,20,24StopStop invoqué depuis tty.
SIGTTIN21,21,26StopLecture sur tty en arrière-plan.
SIGTTOU22,22,27StopÉcriture sur tty en arrière-plan.

Les signaux SIGKILL et SIGSTOP ne peuvent ni capturés ni ignorés.
Ensuite, les signaux non décrits par POSIX.1, mais présents dans les spécifications SUSv2 et SUSv3 / POSIX 1003.1-2001 :

SignalValeurActionCommentaire




SIGPOLLTermSynonyme de SIGIO (System V).
SIGPROF27,27,29TermHorloge pour le suivi
SIGSYS12,-,12CoreMauvais argument de fonction (System V)
SIGTRAP5CorePoint d'arrêt rencontré.
SIGURG16,23,21IgnCondition urgente sur socket (4.2 BSD).
SIGVTALRM26,26,28TermAlarme virtuelle (4.2 BSD).
SIGXCPU24,24,30CoreLimite de temps CPU dépassée (4.2 BSD).
SIGXFSZ25,25,31CoreTaille de fichier excessive (4.2 BSD).

Jusqu'à Linux 2.2 inclus, l'action par défaut pour SIGSYS, SIGXCPU, SIGXFSZ, et (sur les architectures autres que Sparc ou Mips) SIGBUS était de terminer simplement le processus, sans fichier core. (Sur certains Unix, l'action par défaut pour SIGXCPU et SIGXFSZ est de finir le processus sans fichier core). Linux 2.4 se conforme à Posix 1003.1-2001 pour ces signaux, et termine le processus avec un fichier core.
Puis quelques signaux divers :

SignalValeurActionCommentaire




SIGEMT7,-,7Term
SIGSTKFLT-,16,-TermErreur de pile sur coprocesseur

 
(inutilisé).
SIGIO23,29,22TermE/S à nouveau possible(4.2 BSD).
SIGCLD-,-,18IgnSynonyme de SIGCHLD.
SIGPWR29,30,19TermChute d'alimentation (System V).
SIGINFO29,-,-Synonyme de SIGPWR
SIGLOST-,-,-TermPerte de verrou de fichier.
SIGWINCH28,28,20IgnFenêtre redimensionnée (4.3 BSD, Sun).
SIGUNUSED-,31,-TermSignal inutilisé (sera SIGSYS).

(Le signal 29 est est SIGINFO / SIGPWR sur Alpha mais SIGLOST sur Sparc).
SIGEMT n'est pas spécifié par Posix 1003.1-2001 mais apparaît néanmoins sur la plupart des Unix, avec une action par défaut typique correspondant à une fin du processus avec fichier core.
SIGPWR (non spécifié dans Posix 1003.1-2001) est typiquement ignoré sur les autres Unix où il apparaît.
SIGIO (non sécifié par Posix 1003.1-2001) est ignoré par défaut sur plusieurs autres Unix.

Signaux temps-réel

Linux supporte les signaux temps-réel tels qu'ils ont été définis à l'origine dans les extentions temps-réel Posix.4 (et inclus à présent dans Posix 1003.1-2001). Linux supporte 32 signaux temps-réel numéroté de 32 (SIGRTMIN) à 63 (SIGRTMAX). (Les applications doivent toujours se référer aux signaux temps-réel en utilisant la notation SIGRTMIN+n, car la plage des numéros des signaux varie suivant les Unix).
Contrairement aux signaux standards, les signaux temps-réel n'ont pas de signification prédéfinie : l'ensemble complet de ces signaux peut être utilisée à des fins spécifiques à l'application. (Notez quand même que l'implémentation LinuxThreads utilise les trois premiers signaux temps-réel).
L'action par défaut pour un signal temps-réel non capturé est de terminer le processus récepteur.
Les signaux temps-réel se distinguent de leurs homologues classiques ainsi :
1.
Plusieurs instances d'un signal temps-réel peuvent être empilées. Au contraire, si plusieurs instances d'un signal standard arrivent alors qu'il est bloqué, une seule instance sera mémorisée.
2.
Si le signal est envoyé en utilisant sigqueue(2), il peut être accompagné d'une valeur (un entier ou un pointeur). Si le processus récepteur positionne un gestionnaire en utilisant l'attribut SA_SIGACTION de l'appel sigaction(2) alors il peut accéder à la valeur transmise dans le champ si_value de la structure siginfo_t passée en second argument au gestionnaire. De plus, les champs si_pid et si_uid de cette structure fournissent le PID et l'UID réel du processus émetteur.
3.
Les signaux temps-réel sont délivrés dans un ordre précis. Les divers signaux temps-réel du même type sont délivrés dans l'ordre où ils ont été émis. Si différents signaux temps-réel sont envoyés au processus, ils sont délivrés en commençant par le signal de numéro le moins élevé (le signal de plus fort numéro est celui de priorité la plus faible).

Si des signaux standards et des signaux temps-réel sont simultanément en attente pour un processus, Posix ne précise pas d'ordre de délivrance. Linux, comme beaucoup d'autres implémentations, donne priorité aux signaux temps-réel dans ce cas.
D'après Posix, une implémentation doit permettre l'empilement d'au moins _POSIX_SIGQUEUE_MAX (32) signaux pour un processus. Néanmoins, plutôt que de fixer une limite par processus, Linux impose une limite pour l'ensemble des signaux empilés sur le système pour tous les processus. Cette limite peut être consultée, et modifiée (avec les privilèges adéquats) grâce au fichier /proc/sys/kernel/rtsig-max. Un fichier associé, /proc/sys/kernel/rtsig-max, indique combien de signaux temps-réel sont actuellement empilés.

CONFORMITÉ

POSIX.1

BOGUES

SIGIO et SIGLOST ont la même valeur, le dernier est mis en commentaire dans les sources du noyau, mais certaines applications considèrent encore que le signal 29 est SIGLOST.

VOIR AUSSI

kill(1), kill(2), setitimer(2) sigaction(2), signal(2), sigprocmask(2), sigqueue(2)

TRADUCTION

Christophe Blaess, 1996-2003.