Linux podržava pouzdane signale POSIX (u daljem tekstu "standardni signali") i POSIX signale u realnom vremenu.
Standardni signali
Linux podržava standardne signale navedene u nastavku. Nekoliko brojeva signala zavisi od arhitekture, kako je navedeno u koloni "Vrednost". (Kada su date tri vrednosti, prva je obično validna za alfa i sparc, srednja za i386, ppc i sh, a poslednja za mips.
A - označava da signal nije prisutan na odgovarajućoj arhitekturi.)
Unosi u stupcu "Akcija" tabele navode podrazumevanu akciju za signal, kako slijedi:
Termin
Podrazumevana akcija je da prekine proces.
Ign
Podrazumevana radnja je ignorisanje signala.
Core
Podrazumevana akcija je da prekine proces i dump jezgro.
Stani
Podrazumevana akcija je zaustaviti proces.
Prvo signale opisane u originalnom POSIX.1 standardu.
Signal | Vrednost | Akcija | Komentar |
ili smrt procesa kontrole | |||
SIGINT | 2 | Termin | Prekini sa tastature |
SIGQUIT | 3 | Core | Prekinite sa tastature |
SIGILL | 4 | Core | Nelegalno Uputstvo |
SIGABRT | 6 | Core | Prekinite signal od prekida (3) |
SIGFPE | 8 | Core | Izuzetak sa plutajućim tačkama |
SIGKILL | 9 | Termin | Kill signal |
SIGSEGV | 11 | Core | Nevažeća referenca memorije |
SIGPIPE | 13 | Termin | Broken cijevi: pišite na cijev bez čitača |
SIGALRM | 14 | Termin | Signal tajmera iz alarma (2) |
SIGTERM | 15 | Termin | Prekidni signal |
SIGUSR1 | 30,10,16 | Termin | Korisnički definisani signal 1 |
SIGUSR2 | 31,12,17 | Termin | Korisnički definisani signal 2 |
SIGCHLD | 20,17,18 | Ign | Dete su prestale ili prestale |
SIGCONT | 19,18,25 | Nastavite ako zaustavite | |
SIGSTOP | 17,19,23 | Stani | Zaustavi proces |
SIGTSTP | 18,20,24 | Stani | Zaustavite unos na tty |
SIGTTIN | 21,21,26 | Stani | tty ulaz za pozadinski proces |
SIGTTOU | 22,22,27 | Stani | tty output za pozadinski proces |
Signali SIGKILL i SIGSTOP ne mogu biti uhvaćeni, blokirani ili ignorisani.
Sledeći signal nije u standardu POSIX.1, već je opisan u SUSv2 i SUSv3 / POSIX 1003.1-2001.
Signal | Vrednost | Akcija | Komentar |
SIGPOLL | Termin | Položaj događaja (Sys V). Sinonim za SIGIO | |
SIGPROF | 27,27,29 | Termin | Tajmer profiliranja je istekao |
SIGSYS | 12, -, 12 | Core | Loš argument za rutinu (SVID) |
SIGTRAP | 5 | Core | Trap / trap breakpoint |
SIGURG | 16,23,21 | Ign | Hitno stanje na utičnici (4.2 BSD) |
SIGVTALRM | 26,26,28 | Termin | Virtuelni budilnik (4.2 BSD) |
SIGXCPU | 24,24,30 | Core | Prekoračeni vremenski period CPU-a (4,2 BSD) |
SIGXFSZ | 25,25,31 | Core | Prekoračena veličina datoteke (4.2 BSD) |
Do i uključujući Linux 2.2, podrazumevano ponašanje za SIGSYS , SIGXCPU , SIGXFSZ i (na arhitekturi osim SPARC-a i MIPS-a) SIGBUS je trebalo da prekine proces (bez deponije jezgra). (Na nekim drugim Unices-u, podrazumevana akcija za SIGXCPU i SIGXFSZ je da okonča proces bez deponije jezgra.) Linux 2.4 je u skladu sa zahtevima POSIX 1003.1-2001 za ove signale, okončavajući proces sa deponijom jezgra.
Sledeći razni drugi signali.
Signal | Vrednost | Akcija | Komentar |
SIGEMT | 7, -, 7 | Termin | |
SIGSTKFLT | -, 16, - | Termin | Greška pri skladištenju na koprocesor (neiskorišteno) |
SIGIO | 23,29,22 | Termin | I / O je sada moguć (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | Sinonim za SIGCHLD |
SIGPWR | 29,30,19 | Termin | Ispravka napajanja (sistem V) |
SIGINFO | 29, -, - | Sinonim za SIGPWR | |
SIGLOST | -, -, - | Termin | Izgubljena brava datoteke |
SIGWINCH | 28,28,20 | Ign | Signal za promjenu veličine prozora (4.3 BSD, Sunce) |
SIGUNUSED | -, 31, - | Termin | Neupotrebljeni signal (biće SIGSYS) |
(Signal 29 je SIGINFO / SIGPWR na alfi, ali SIGLOST na sparc.)
SIGEMT nije naveden u POSIX 1003.1-2001, ali se bez ikakvog pojavljivanja pojavljuje na većini drugih Unices-a, gde je njegova podrazumevana akcija obično da obustavi proces pomoću glavne deponije.
SIGPWR (koji nije naveden u POSIX 1003.1-2001) obično se zanemaruje na ostalim Unices-u gde se pojavljuje.
SIGIO (koji nije naveden u POSIX 1003.1-2001) je podrazumevano ignorisan na nekoliko drugih Unices.
Signali u realnom vremenu
Linux podržava signale u realnom vremenu kao što su prvobitno definisani u POSIX.4 nadogradnjama u realnom vremenu (i sada uključeni u POSIX 1003.1-2001). Linux podržava 32 signala u realnom vremenu, numeriranih od 32 ( SIGRTMIN ) do 63 ( SIGRTMAX ). (Programi se trebaju uvijek odnositi na signale u realnom vremenu koristeći oznaku SIGRTMIN + n, jer se opseg brojeva signala u realnom vremenu razlikuje u Unices-u.)
Za razliku od standardnih signala, signali u realnom vremenu nemaju predefinisano značenje: čitav skup signala u realnom vremenu može se koristiti za namene definisane u aplikacijama. (Imajte na umu da implementacija LinuxThreads koristi prva tri signala u realnom vremenu.)
Podrazumevana akcija za unhandled signal u realnom vremenu je da prekine proces prijema.
Signali u realnom vremenu se razlikuju po sledećem:
- Višestruki primjeri signala u realnom vremenu mogu se staviti u red. Nasuprot tome, ako se isporučuju višestruke instance standardnog signala, dok je taj signal trenutno blokiran, onda se samo jedna instanca nalazi u redu.
- Ako se signal šalje pomoću sigqueue (2), prateća vrijednost (bilo cijeli broj ili pokazivač) se može poslati s signalom. Ako proces primanja uspostavlja upravljač za ovaj signal pomoću oznake SA_SIGACTION do sigaction (2), onda može dobiti ove podatke preko polja si_value strukture siginfo_t koja se prenosi kao drugi argument upravljaca. Štaviše, polja si_pid i si_uid ove strukture mogu se koristiti za dobijanje PID-a i stvarnog ID-a korisnika procesa slanja signala.
- Signali u realnom vremenu se isporučuju u garantovanom redosledu. Višestruki signali istog tipa istog tipa se isporučuju u redosledu kojim su poslati. Ako se različiti signali u realnom vremenu šalju u proces, oni se isporučuju počevši od najnižeg signala. (Ie, signali sa malim brojem imaju najviši prioritet.)
Ako su u toku i standardni i realni vremenski signali za proces, POSIX ga ostavlja neodređenim i isporučuje se prvo. Linux, kao i mnoge druge implementacije, daje prednost standardnim signalima u ovom slučaju.
Prema POSIX-u, implementacija bi trebala dozvoliti da bar _POSIX_SIGQUEUE_MAX (32) signali u realnom vremenu budu stavljeni u red u procesu. Međutim, umesto postavljanja ograničenja po procesu, Linux nameće ograničenje na nivou sistema na broj redovnih signala u redovnom vremenu za sve procese.
Ovo ograničenje se može pregledati (i uz privilegiju) preko datoteke / proc / sys / kernel / rtsig-max . Povezani fajl, / proc / sys / kernel / rtsig-max , može se koristiti za saznanje koliko trenutno signala u redosledu.
SAGLASNOST
POSIX.1
Važno: Koristite komandu čovjeka ( % čovjek ) da biste videli kako se na vašem računaru koristi komanda.