Linukso subtenas ambaŭ fidindajn signalojn de POSIX (jenaj "normaj signaloj") kaj POSIX-tempoj signaloj.
Normaj signaloj
Linukso subtenas la normajn signojn listigitajn sube. Pluraj signaloj estas dependa de arkitekturo, kiel oni indikas en la "Valoro" kolumno. (Kie tri valoroj estas donitaj, la unua estas kutime valida por alfa kaj sparko, la meza unu por i386, ppc kaj sh, kaj la lasta por mips.
A - signifas, ke signalo forestas sur la responda arkitekturo.)
La eniroj en la "Agado" kolumno de la tablo specifas la agordan agon por la signalo, kiel sekvas:
Terminon
Defaŭlta ago estas forigi la procezon.
Ign
Antaŭfaŭlta ago ignori la signalon.
Kerna
Defaŭlta ago estas forigi la procezon kaj forĵeti kernon.
Ĉesu
Defaŭlta ago estas ĉesigi la procezon.
Unue la signaloj priskribitaj en la originala normo POSIX.1.
Signalo | Valoro | Ago | Komento |
aŭ morto de kontrola procezo | |||
SIGINT | 2 | Terminon | Interrompi de klavaro |
SIGQUIT | 3 | Kerna | Forlasi de klavaro |
SIGILLO | 4 | Kerna | Neleĝa Instrukcio |
SIGABRT | 6 | Kerna | Forgesi signalon de aborto (3) |
SIGFPE | 8 | Kerna | Ekspunkta escepto |
SIGKILLO | 9 | Terminon | Mortigi signalon |
SIGSEGV | 11 | Kerna | Nevalida memoro-referenco |
SIGPIPO | 13 | Terminon | Rompita tubo: skribu al tubaro sen legantoj |
SIGALRM | 14 | Terminon | Timer signalo de alarmo (2) |
SIGTERM | 15 | Terminon | Signalo de finaĵo |
SIGUSR1 | 30.10,16 | Terminon | Uzanta difinita signalo 1 |
SIGUSR2 | 31,12,17 | Terminon | Uzanto difinita signalo 2 |
SIGCHLD | 20,17,18 | Ign | Infano haltita aŭ eksigita |
SIGCONT | 19,18,25 | Daŭrigu se haltita | |
SIGSTOP | 17,19,23 | Ĉesu | Ĉesu procezon |
SIGTSTP | 18,20,24 | Ĉesu | Ĉesu tajpita ĉe tty |
SIGTTIN | 21,21,26 | Ĉesu | tty enigo por fona procezo |
SIGTTOU | 22,22,27 | Ĉesu | Ĉi tiu eligo por fona procezo |
La signaloj SIGKILL kaj SIGSTOP ne povas esti kaptitaj, blokitaj aŭ ignoritaj.
Tuj poste la signaloj ne en la normo POSIX.1 sed priskribitaj en SUSv2 kaj SUSv3 / POSIX 1003.1-2001.
Signalo | Valoro | Ago | Komento |
SIGPOLL | Terminon | Pollabla evento (Sys V). Sinonimo de SIGIO | |
SIGPROF | 27,27,29 | Terminon | Profila temporizador eksvalidiĝis |
SIGSYS | 12, -, 12 | Kerna | Malbona argumento al rutino (SVID) |
SIGTRAP | 5 | Kerna | Trako / punkto de punktoj |
SIGURG | 16,23,21 | Ign | Urĝa kondiĉo sur socket (4.2 BSD) |
SIGVTALRM | 26,26,28 | Terminon | Virtuala horloĝo (4.2 BSD) |
SIGXCPU | 24,24,30 | Kerna | CPU-tempa limo superis (4.2 BSD) |
SIGXFSZ | 25,25,31 | Kerna | Dosiera grandeca limo superis (4.2 BSD) |
Ĝis kaj inkluzive Linukso 2.2, la defaŭlta konduto por SIGSYS , SIGXCPU , SIGXFSZ , kaj (sur arkitekturoj krom SPARC kaj MIPS) SIGBUS devis fini la procezon (sen kerno). (En iuj aliaj Unioj, la agordo implicite por SIGXCPU kaj SIGXFSZ estas por nuligi la procezon sen kerno.) Linukso 2.4 laŭigas la postulojn POSIX 1003.1-2001 por ĉi tiuj signaloj, finante la procezon per koraŝutilo.
Sekva diversaj aliaj signaloj.
Signalo | Valoro | Ago | Komento |
SIGEMT | 7, -, 7 | Terminon | |
SIGSTKFLT | -, 16, - | Terminon | Stack-kulpo pri coprocesoro (ne uzata) |
SIGIO | 23,29,22 | Terminon | I / O nun eblas (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | Sinonimo por SIGCHLD |
SIGPWR | 29,30,19 | Terminon | Potenca malsukceso (Sistemo V) |
SIGINFO | 29, -, - | Sinonimo por SIGPWR | |
SIGLOST | -, -, - | Terminon | Ŝlosila dosiero perdita |
SIGWINCH | 28,28,20 | Ign | Fenestra regrandigo de signalo (4.3 BSD, Suno) |
SIGUNUSED | -, 31, - | Terminon | Senutila signalo (estos SIGSYS) |
(Signalo 29 estas SIGINFO / SIGPWR en alfa sed SIGLOST sur sparc.)
SIGEMT ne estas precizigita en POSIX 1003.1-2001, sed neveterless aperas en la plej multaj aliaj Unioj, kie ĝia antaŭdifinita ago kutime finas la procezon per kerna baseno.
SIGPWR (kiu ne estas specifita en POSIX 1003.1-2001) estas kutime ignorita defaŭlte sur tiuj aliaj Unoj, kie ĝi aspektas.
SIGIO (kiu ne estas specifita en POSIX 1003.1-2001) ignoris implicite en pluraj aliaj Unoj.
Signaloj en reala tempo
Linukso subtenas realajn signalojn kiel origine difinitan en la POSIX.4 realtempaj etendoj (kaj nun inkluzivita en POSIX 1003.1-2001). Linukso subtenas 32 realajn signalojn, numeritajn de 32 ( SIGRTMIN ) ĝis 63 ( SIGRTMAX ). (Programoj ĉiam rilatas al reala tempo signaloj uzante notacio SIGRTMIN + n, ĉar la gamo de reala tempo signaloj varias laŭ Unioj.)
Kontraste kun normaj signaloj, signaloj en reala tempo ne havas antaŭdifinitajn signifojn: la tuta aro de reala tempo signaloj povas esti uzataj por la difinitaj celoj. (Rimarku, tamen, ke la implementado de LinuxThreads uzas la unuajn tri realajn signalojn.)
La agordo defaŭlta por signalo en reala tempo ne finigita estas por nuligi la ricevan procezon.
Reala tempo signaloj distingas per la sekvaj:
- Multnombraj petskriboj de reala tempo signaloj povas esti kveraj. Kontraŭe, se multaj ekzemploj de norma signalo estas transdonitaj dum tiu signalo estas nun blokita, tiam nur unu ekzemplo estas kola.
- Se la signalo estas sendita per sigqueue (2), akompana valoro (aŭ entjero aŭ puntero) povas esti sendita per la signalo. Se la ricevanta procezo establas traktilon por ĉi tiu signalo per la SA_SIGACTION- flago al sigo (2), tiam ĝi povas akiri ĉi tiun datumon per la kampo si_value de la siginfo_t strukturo pasita kiel la dua argumento al la traktilo. Krome, la se_pid kaj si_uid kampoj de ĉi tiu strukturo povas esti uzataj por akiri la PID kaj realan uzanton-ID de la procezo sendanta la signalon.
- Reala tempo signaloj estas transdonitaj en garantiita ordo. Multoblaj realaj signaloj de la sama tipo estas transdonitaj laŭ la ordo, kiun ili sendis. Se malsamaj signaloj de reala tempo estas senditaj al procezo, ili estas transdonitaj komencante per la plej nombra signalo. (Jes, malaltaj nombraj signaloj havas plej altan prioritaton.)
Se ambaŭ signaloj kaj normalaj signaloj estas pritraktataj por procezo, POSIX lasas ĝin ne specifita, kiu estas transdonita unue. Linukso, kiel multaj aliaj implementoj, donas prioritaton al normaj signaloj en ĉi tiu kazo.
Laŭ POSIX, efektivigo devus permesi almenaŭ _POSIX_SIGQUEUE_MAX (32) reala tempo signaloj por kroĉi al procezo. Tamen, anstataŭ meti perprocelan limon, Linukso postulas sistemon-limon sur la numero de signaloj en tempo realigitaj en ĉiuj tempoj.
Ĉi tiu limo povas esti vidita (kaj kun privilegio) ŝanĝita per la dosiero / proc / sys / kernel / rtsig-max . Rilataj dosiero, / proc / sys / kernel / rtsig-max , povas esti uzata por ekscii kiom da tempoj realaj signaloj estas nun kveraj.
CONFORMING TO
POSIX.1
Grava: Uzu la komandon ( % viro ) por vidi kiel komando estas uzata en via komputilo.