Linux |
CentOS 5.3 |
|
signal(7) |
signal − Liste des signaux disponibles. |
Linux supporte supporte à la fois les signaux POSIX classiques (« signaux standards ») et les signaux POSIX temps-réel. |
Dispositions de signaux |
Chaque signal a une disposition courante qui détermine comment le processus se comporte lorsqu’un signal lui est délivré. Les symboles de la colonne « Action » des tables ci-dessous spécifient la disposition par défaut pour chaque signal : |
Term |
Par défaut, terminer le processus. |
||
Ign |
Par défaut, ignorer le signal. |
||
Core |
Par défaut, terminer le processus et créer un fichier core (voir core(5)). |
||
Stop |
Par défaut, arrêter le processus. |
||
Cont |
Par défaut, continuer le processus s’il est arrêté. |
Un processus peut modifier la disposition d’un signal avec sigaction(2) ou (moins portable) signal(2). En utilisant ces appels système, un processus peut choisir de faire survenir l’un des comportements suivants à la délivrance d’un signal : effectuer l’action par défaut ; ignorer le signal ; capturer le signal avec un gestionnaire de signaux, une fonction définie par le programmeur qui est automatiquement invoquée lorsque le signal est délivré. La disposition d’un signal est un attribut par proceessus : dans une application multithread, la disposition d’un signal particulier est la même pour tous les threads. |
Masque de signaux et signaux en attente |
Un signal peut être bloqué, ce qui signifie qu’il ne sera pas délivré tant qu’il n’aura pas été débloqué. Entre le moment où il est généré et celui où il est délivré, un signal est dit en attente. Chaque thread d’un processus a un masque de signaux indépendant, qui indique l’ensemble de signaux que le thread bloque actuellement. Un thread peut manipuler son masque de signaux avec pthread_sigmask(3). Dans une application traditionnelle simple thread, sigprocmask(2) peut être utilisée pour manipuler le masque de signaux. Un signal peut être généré (et ainsi être mis en attente) pour un processus comme un ensemble (par exemple, lorsqu’il est émis avec kill(2)) ou pour un thread particulier (par exemple, certains signaux, comme SIGSEGV ou SIGFPE, générés comme la conséquence de l’exécution d’une instruction particulière en langage machine, sont adressés à un thread, comme sont les signaux ciblés sur un thread particulier avec pthread_kill(2)). Un signal adressé à un processus peut être délivré à n’importe lequel des threads qui n’a pas de signaux bloqués. Si plus d’un thread a un signal débloqué, le noyau choisit arbitrairement un thread auquel délivrer le signal. Un thread peut obtenir l’ensemble des signaux en attente avec sigpending(2). Cet ensemble consiste en la réunion d l’ensemble des signaux en attente adressés au processus et l’ensemble des signaux en attente du thread appelant. |
Signaux standards |
Linux supporte les signaux standards ci-dessous. Plusieurs numéros de signaux sont dépendants de l’architecture, comme indiqué dans la colonne « Valeur ». (Où trois valeurs sont fournies, la première est généralement valide pour alpha et sparc, celle du milieu pour i386, ppc et sh, et la dernière pour mips. A − denotes that a signal is absent on the corresponding architecture.) Voici tout d’abord les signaux décrits dans le standard POSIX.1-1990 original : |
|
|