Linux podržava i POSIX pouzdane signale (u daljnjem tekstu "standardni signali") i POSIX real-time signali.
Standardni signali
Linux podržava dolje navedene standardne signale. Nekoliko signalnih brojeva ovisi o arhitekturi, kao što je naznačeno u stupcu "Vrijednost". (Gdje su tri vrijednosti, prva je obično valjana za alfa i sparc, srednji za i386, ppc i sh, a posljednji za mips.
A - označava da je signal prisutan na odgovarajućoj arhitekturi.)
Unosi u stupcu "Akcija" u tablici određuju zadanu akciju za signal, kako slijedi:
Termin
Zadana radnja je prekinuti postupak.
IGN
Zadana radnja je zanemariti signal.
srž
Zadana radnja je ukinuti proces i odlaganje jezgre.
Stop
Zadana radnja je zaustavljanje postupka.
Najprije signali opisani u izvornom POSIX.1 standardu.
Signal | Vrijednost | Radnja | Komentar |
ili smrti kontrole procesa | |||
SIGINT | 2 | Termin | Prekinite s tipkovnice |
SIGQUIT | 3 | srž | Zatvorite tipkovnicu |
SIGILL | 4 | srž | Nezakonito uputstvo |
SIGABRT | 6 | srž | Prekini signal iz prekid (3) |
SIGFPE | 8 | srž | Izuzetak s pomičnim zarezom |
SIGKILL | 9 | Termin | Ubiti signal |
SIGSEGV | 11 | srž | Nevažeća referenca za memoriju |
SIGPIPE | 13 | Termin | Slomljena cijev: napiši cijev bez čitača |
SIGALRM | 14 | Termin | Signal vremena iz tvrtke alarm (2) |
SIGTERM | 15 | Termin | Signal završetka |
SIGUSR1 | 30,10,16 | Termin | Korisnički definirani signal 1 |
SIGUSR2 | 31,12,17 | Termin | Korisnički definiran signal 2 |
SIGCHLD | 20,17,18 | IGN | Dijete je prestalo ili prestalo |
SIGCONT | 19,18,25 | Nastavi ako se zaustavi | |
SIGSTOP | 17,19,23 | Stop | Zaustavi postupak |
SIGTSTP | 18,20,24 | Stop | Prestani tipkati na tty |
SIGTTIN | 21,21,26 | Stop | tty ulaz za pozadinski proces |
SIGTTOU | 22,22,27 | Stop | tty izlaz za pozadinski proces |
SignaliSIGKILL iSIGSTOP ne može se uhvatiti, blokirati ili zanemariti.
Dalje signali nisu u POSIX.1 standardu, ali opisani su u SUSv2 i SUSv3 / POSIX 1003.1-2001.
Signal | Vrijednost | Radnja | Komentar |
SIGPOLL | Termin | Pollable događaj (Sys V). Sinonim SIGIO | |
SIGPROF | 27,27,29 | Termin | Istekao je profiliranje vremena |
SIGSYS | 12,-,12 | srž | Loši argument za rutinu (SVID) |
SIGTRAP | 5 | srž | Trap / prekidna točka |
SIGURG | 16,23,21 | IGN | Hitno stanje na utičnici (4.2 BSD) |
SIGVTALRM | 26,26,28 | Termin | Virtualni alarmni sat (4.2 BSD) |
SIGXCPU | 24,24,30 | srž | Vremensko ograničenje CPU-a premašeno (4.2 BSD) |
SIGXFSZ | 25,25,31 | srž | Ograničenje veličine datoteke premašeno (4.2 BSD) |
Do i uključujući i Linux 2.2, zadano ponašanje zaSIGSYS, SIGXCPU, SIGXFSZ, i (na arhitekturama osim SPARC i MIPS)SIGBUS je bio prekinuti postupak (bez jezgre odlagališta). (Na nekim drugim Unices zadana radnja zaSIGXCPU iSIGXFSZ je prekinuti postupak bez jezgre odlagališta.) Linux 2.4 odgovara POSIX 1003.1-2001 zahtjevima za ove signale, završavajući proces s jezgrom izvatkom.
Sljedeći razni drugi signali.
Signal | Vrijednost | Radnja | Komentar |
SIGEMT | 7,-,7 | Termin | |
SIGSTKFLT | -,16,- | Termin | Pogreška stacka na koprocesoru (neiskorišteno) |
SIGIO | 23,29,22 | Termin | I / O sada je moguće (4.2 BSD) |
SIGCLD | -,-,18 | IGN | Sinonim za SIGCHLD |
SIGPWR | 29,30,19 | Termin | Prekid napajanja (sustav V) |
SIGINFO | 29,-,- | Sinonim za SIGPWR | |
SIGLOST | -,-,- | Termin | Zaključana je datoteka izgubljena |
SIGWINCH | 28,28,20 | IGN | Signal veličine prozora (4.3 BSD, Sunce) |
SIGUNUSED | -,31,- | Termin | Neiskorišteni signal (bit će SIGSYS) |
(Signal 29 jeSIGINFO / SIGPWR na alfa, aliSIGLOST na sparcu.)
SIGEMT nije naveden u POSIX 1003.1-2001, no ipak se pojavljuje na većini ostalih Unices, gdje je zadana radnja obično dovršiti proces s osnovnim odljevom.
SIGPWR (koji nije naveden u POSIX 1003.1-2001) obično se prema zadanim postavkama zanemaruje na tim drugim Unices mjestima gdje se pojavljuje.
SIGIO (koji nije naveden u POSIX 1003.1-2001) zanemaruje se prema zadanim postavkama na nekoliko drugih Unices.
Signali u realnom vremenu
Linux podržava signale u stvarnom vremenu kao što je izvorno definirano u POSIX.4 ekstenzijama u stvarnom vremenu (a sada je uključeno u POSIX 1003.1-2001). Linux podržava 32 signala u realnom vremenu, broju od 32 (SIGRTMIN) do 63 (SIGRTMAX). (Programi se uvijek trebaju odnositi na signale u stvarnom vremenu pomoću notacijeSIGRTMIN+ n, jer se raspon brojeva signala u stvarnom vremenu razlikuje od Unicesa.)
Za razliku od standardnih signala, signali u stvarnom vremenu nemaju unaprijed definiranih značenja: cijeli niz signala u stvarnom vremenu može se koristiti za svrhe definirane u aplikaciji. (Napominjemo, međutim, da implementacija LinuxThreadsa koristi prva tri signala u realnom vremenu.)
Zadana radnja za neuključeni signal u stvarnom vremenu jest prekinuti postupak primanja.
Signali u stvarnom vremenu razlikuju se od sljedećeg:
- Mnogo primjera signala u realnom vremenu može biti u redu čekanja. Nasuprot tome, ako se isporučuju višestruke instance standardnog signala dok je taj signal trenutno blokiran, tada je samo jedan primjer u redu čekanja.
- Ako se signal šalje pomoćusigqueue(2), prateća vrijednost (bilo cijeli broj ili pokazivač) može se poslati s signalom. Ako postupak prijama uspostavlja rukovatelj za ovaj signal pomoćuSA_SIGACTION zastava nasigaction(2) onda može dobiti te podatke preko si_value polje siginfo_t struktura je prošla kao drugi argument autoru. Nadalje, si_pid i si_uid polja ove strukture mogu se koristiti za dobivanje PID-a i stvarnog korisničkog ID-a procesa koji šalje signal.
- Signali u stvarnom vremenu isporučuju se u zajamčenom redoslijedu. Više signala istog tipa u stvarnom vremenu isporučuju se redoslijedom kojim su poslani. Ako se različitim signalima u stvarnom vremenu šalju procesu, one se isporučuju počevši od signala s najnižim brojem. (Npr., Signali s malim brojem imaju najveći prioritet.)
Ako su oba standardna i signala u stvarnom vremenu u tijeku za proces, POSIX ostavlja neodređen koji se isporučuje prvi. Linux, kao i mnoge druge implementacije, daje prioritet standardnim signalima u ovom slučaju.
Prema POSIX-u, implementacija bi trebala omogućiti najmanje _POSIX_SIGQUEUE_MAX (32) signala u stvarnom vremenu da budu na čekanju na proces. Međutim, umjesto postavljanja ograničenja po procesu, Linux nameće ograničenje na razini cijelog sustava na broj zakašnjelih signala u stvarnom vremenu za sve procese.
Ovo se ograničenje može promatrati (i uz privilegiju) mijenjati pomoću / Proc / sys / kernel / rtsig-max datoteka. Slična datoteka, / Proc / sys / kernel / rtsig-max , može se koristiti za otkrivanje koliko je signala u realnom vremenu trenutačno u redu čekanja.
SUDJELUJUĆI U
POSIX.1
Važno: Koristiti čovjek naredba ( % čovjek ) kako biste vidjeli kako se naredba koristi na vašem računalu.