Signalo - Linukso / Unikso Komando

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:

  1. 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.
  2. 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.
  3. 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.