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 :
| Signal | Valeur | Action | Commentaire
|
|
|
|
|
| | | de contrôle, ou mort du processus
|
| | | de contrôle.
|
| SIGINT | 2 | Term | Interruption depuis le clavier.
|
| SIGQUIT | 3 | Core | Demande 'Quitter' depuis le clavier.
|
| SIGILL | 4 | Core | Instruction illégale.
|
| SIGABRT | 6 | Core | Signal d'arrêt depuis abort(3).
|
| SIGFPE | 8 | Core | Erreur mathématique virgule flottante.
|
| SIGKILL | 9 | Term | Signal 'KILL'.
|
| SIGSEGV | 11 | Core | Référence mémoire invalide.
|
| SIGPIPE | 13 | Term | Écriture dans un tube sans lecteur.
|
| SIGALRM | 14 | Term | Temporisation alarm(2) écoulée.
|
| SIGTERM | 15 | Term | Signal de fin.
|
| SIGUSR1 | 30,10,16 | Term | Signal utilisateur 1.
|
| SIGUSR2 | 31,12,17 | Term | Signal utilisateur 2.
|
| SIGCHLD | 20,17,18 | Ign | Fils arrêté ou terminé.
|
| SIGCONT | 19,18,25 | | Continuer si arrêté.
|
| SIGSTOP | 17,19,23 | Stop | Arrêt du processus.
|
| SIGTSTP | 18,20,24 | Stop | Stop invoqué depuis tty.
|
| SIGTTIN | 21,21,26 | Stop | Lecture sur tty en arrière-plan.
|
| SIGTTOU | 22,22,27 | Stop | É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 :
| Signal | Valeur | Action | Commentaire
|
|
|
|
|
| SIGPOLL | | Term | Synonyme de SIGIO (System V).
|
| SIGPROF | 27,27,29 | Term | Horloge pour le suivi
|
| SIGSYS | 12,-,12 | Core | Mauvais argument de fonction (System V)
|
| SIGTRAP | 5 | Core | Point d'arrêt rencontré.
|
| SIGURG | 16,23,21 | Ign | Condition urgente sur socket (4.2 BSD).
|
| SIGVTALRM | 26,26,28 | Term | Alarme virtuelle (4.2 BSD).
|
| SIGXCPU | 24,24,30 | Core | Limite de temps CPU dépassée (4.2 BSD).
|
| SIGXFSZ | 25,25,31 | Core | Taille 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 :
| Signal | Valeur | Action | Commentaire
|
|
|
|
|
| SIGEMT | 7,-,7 | Term |
|
| SIGSTKFLT | -,16,- | Term | Erreur de pile sur coprocesseur
|
| | | (inutilisé).
|
| SIGIO | 23,29,22 | Term | E/S à nouveau possible(4.2 BSD).
|
| SIGCLD | -,-,18 | Ign | Synonyme de SIGCHLD.
|
| SIGPWR | 29,30,19 | Term | Chute d'alimentation (System V).
|
| SIGINFO | 29,-,- | | Synonyme de SIGPWR
|
| SIGLOST | -,-,- | Term | Perte de verrou de fichier.
|
| SIGWINCH | 28,28,20 | Ign | Fenêtre redimensionnée (4.3 BSD, Sun).
|
| SIGUNUSED | -,31,- | Term | Signal 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
TRADUCTION
Christophe Blaess, 1996-2003.
|