Linux admet dos senyals confiables POSIX (d'ara endavant "senyals estàndard") i senyals POSIX en temps real.
Senyals estàndard
Linux admet els senyals estàndard que es detallen a continuació. Diversos nombres de senyal són dependents de l'arquitectura, tal com s'indica a la columna "Valor". (Quan es donen tres valors, el primer sol ser vàlid per alfa i sparc, el mig per a i386, ppc i sh i l'últim per mips.
A - denota que hi ha un senyal absent en l'arquitectura corresponent).
Les entrades de la columna "Acció" de la taula especifiquen l'acció predeterminada del senyal, de la manera següent:
Termini
L'acció predeterminada és finalitzar el procés.
Ign
L'acció predeterminada és ignorar el senyal.
Nucli central
L'acció predeterminada és finalitzar el procés i abocar el nucli.
Aturar
L'acció per defecte és aturar el procés.
Primer els senyals descrits a l'estàndard POSIX.1 original.
Senyal | Valor | Acció | Comentari |
o la mort del procés de control | |||
SIGINT | 2 | Termini | Interrupció del teclat |
SIGQUIT | 3 | Nucli central | Sortiu del teclat |
SIGILL | 4 | Nucli central | Instrucció il·legal |
SIGABRT | 6 | Nucli central | Desactiva el senyal de avortar (3) |
SIGFPE | 8 | Nucli central | Excepció de punt flotant |
SIGKILL | 9 | Termini | Mata el senyal |
SIGSEGV | 11 | Nucli central | Referència de memòria no vàlida |
SIGPIPE | 13 | Termini | Tubs trencats: escriviu a canonades sense lectors |
SIGALRM | 14 | Termini | Senyal de temporitzador des de alarma (2) |
SIGTERM | 15 | Termini | Senyal de finalització |
SIGUSR1 | 30,10,16 | Termini | Senyal definit per l'usuari 1 |
SIGUSR2 | 31,12,17 | Termini | Senyal definit per l'usuari 2 |
SIGCHLD | 20,17,18 | Ign | El nen s'ha aturat o finalitzat |
SIGCONT | 19,18,25 | Continueu si es deté | |
SIGSTOP | 17,19,23 | Aturar | Atura el procés |
SIGTSTP | 18,20,24 | Aturar | Deixa d'escriure a tty |
SIGTTIN | 21,21,26 | Aturar | entrada tty per al procés de fons |
SIGTTOU | 22,22,27 | Aturar | sortida tty per al procés de fons |
Els senyalsSIGKILL iSIGSTOP no es pot aturar, bloquejar o ignorar.
A continuació, els senyals no estan en l'estàndard POSIX.1, sinó que es descriuen a SUSv2 i SUSv3 / POSIX 1003.1-2001.
Senyal | Valor | Acció | Comentari |
SIGPOLL | Termini | Esdeveniment pol·lable (Sys V). Sinònim de SIGIO | |
SIGPROF | 27,27,29 | Termini | El temporitzador de perfils ha caducat |
SIGSYS | 12,-,12 | Nucli central | Mala argumentació a la rutina (SVID) |
SIGTRAP | 5 | Nucli central | Trampa / trampa de punt de ruptura |
SIGURG | 16,23,21 | Ign | Condició urgent en el sòcol (4.2 BSD) |
SIGVTALRM | 26,26,28 | Termini | Rellotge despertador virtual (4.2 BSD) |
SIGXCPU | 24,24,30 | Nucli central | S'ha superat el límit de temps de la CPU (4.2 BSD) |
SIGXFSZ | 25,25,31 | Nucli central | S'ha superat el límit de mida del fitxer (4.2 BSD) |
Fins i tot incloent Linux 2.2, el comportament predeterminat deSIGSYS, SIGXCPU, SIGXFSZ, i (en arquitectures diferents de SPARC i MIPS)SIGBUS va haver de finalitzar el procés (sense un abocament principal). (En alguns altres Unices, l 'acció predeterminada per aSIGXCPU iSIGXFSZ és acabar el procés sense un abocador principal.) Linux 2.4 s'ajusta als requisits POSIX 1003.1-2001 d'aquests senyals, que finalitzen el procés amb un abocador principal.
A continuació, hi ha diverses altres senyals.
Senyal | Valor | Acció | Comentari |
SIGEMT | 7,-,7 | Termini | |
SIGSTKFLT | -,16,- | Termini | Error de pila al coprocessador (no utilitzat) |
SIGIO | 23,29,22 | Termini | E / S ara possible (4.2 BSD) |
SIGCLD | -,-,18 | Ign | Sinònim de SIGCHLD |
SIGPWR | 29,30,19 | Termini | Falla d'alimentació (sistema V) |
SIGINFO | 29,-,- | Sinònim de SIGPWR | |
SIGLOST | -,-,- | Termini | El bloqueig de fitxers s'ha perdut |
SIGWINCH | 28,28,20 | Ign | Senyal de canvi de mida de la finestra (4.3 BSD, Sol) |
SIGUNUSED | -,31,- | Termini | Senyal no utilitzat (serà SIGSYS) |
(El senyal 29 ésSIGINFO / SIGPWR en una alfa peròSIGLOST en una sparc).
SIGEMT no s'especifica en POSIX 1003.1-2001, però mai no apareix a la majoria d'altres Unices, on la seva acció predeterminada sol ser acabar el procés amb un abocador principal.
SIGPWR (que no s'especifica en POSIX 1003.1-2001) normalment s'ignora de manera predeterminada en aquells altres Unices on apareix.
SIGIO (que no s'especifica en POSIX 1003.1-2001) s'omet de manera predeterminada en diversos Unices.
Senyals en temps real
Linux admet senyals en temps real tal com es va definir originalment a les extensions en temps real POSIX.4 (i ara s'inclou a POSIX 1003.1-2001). Linux admet 32 senyals en temps real, numerades a partir de 32 (SIGRTMIN) a 63 (SIGRTMAX). (Els programes sempre han de referir-se a senyals en temps real utilitzant la notacióSIGRTMIN+ n, ja que el rang de nombres de senyals en temps real varia en Unices.)
A diferència dels senyals estàndard, els senyals en temps real no tenen significats predefinits: es pot utilitzar tot el conjunt de senyals en temps real per a finalitats definides per l'aplicació. (Tingueu en compte, però, que la implementació de LinuxThreads utilitza els primers tres senyals en temps real.)
L'acció predeterminada per a un senyal en temps real no controlat és cancel·lar el procés de recepció.
Els senyals en temps real es distingeixen pel següent:
- Es poden establir múltiples instàncies de senyals en temps real. Per contra, si es lliuren diverses instàncies d'un senyal estàndard mentre el senyal està bloquejat actualment, només es posa en cua una instància.
- Si el senyal s'envia usantsigqueue(2), es pot enviar un valor d'acompanyament (ja sigui un enter o un punter) amb el senyal. Si el procés de recepció estableix un controlador per a aquest senyal utilitzant elSA_SIGACTION marca asigaction(2), llavors pot obtenir aquestes dades a través de la si_value camp de la siginfo_t L'estructura passa com el segon argument al controlador. A més, el si_pid i si_uid Els camps d'aquesta estructura es poden utilitzar per obtenir el PID i l'identificador d'usuari real del procés que envia el senyal.
- Els senyals en temps real es lliuren en un ordre garantit. Diversos senyals en temps real del mateix tipus es lliuren en l'ordre en què van ser enviats. Si s'envien diferents senyals en temps real a un procés, es lliuren començant pel senyal amb un número més baix. (És a dir, els senyals de baix nombre tenen la màxima prioritat).
Si ambdues senyals estàndard i en temps real estan pendents d'un procés, POSIX deixa que no s'especifiqui el primer lliurament. Linux, com moltes altres implementacions, dóna prioritat als senyals estàndard en aquest cas.
Segons POSIX, una implementació hauria de permetre que almenys _POSIX_SIGQUEUE_MAX (32) senyals en temps real es pugin a la cua d'un procés. Tanmateix, en comptes de posar un límit per procés, Linux imposa un límit a tot el sistema sobre el nombre de senyals en temps real en cua per a tots els processos.
Aquest límit es pot veure (i amb privilegis) canviat a través del / proc / sys / kernel / rtsig-max dossier. Un fitxer relacionat, / proc / sys / kernel / rtsig-max , es pot utilitzar per esbrinar quants senyals en temps real estan en cua.
CONFORMANT A
POSIX.1
Important: Utilitzar el home comandament ( % home ) per veure com s'utilitza una comanda a l'ordinador en particular.