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 | Akcijski | 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 od prekida (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 s alarmom (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 |
Signali SIGKILL i SIGSTOP ne mogu 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 | Akcijski | 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 Linux 2.2, zadano ponašanje za SIGSYS , SIGXCPU , SIGXFSZ i (na arhitekturama osim SPARC i MIPS) SIGBUS je trebalo prekinuti postupak (bez sržnog odlaganja). (U nekim drugim jedinicama zadana je radnja za SIGXCPU i SIGXFSZ da prekinemo proces bez pohranjivanja jezgre.) Linux 2.4 usklađen je sa zahtjevima POSIX 1003.1-2001 za te signale, što završava proces s osnovnim izvatkom.
Sljedeći razni drugi signali.
Signal | Vrijednost | Akcijski | 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 je SIGINFO / SIGPWR na alfa, ali SIGLOST 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 završava proces s jezgrom izvatkom.
SIGPWR (koji nije naveden u POSIX 1003.1-2001) obično se prema zadanim postavkama zanemaruje na onim 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 stvarnom vremenu, brojevima od 32 ( SIGRTMIN ) do 63 ( SIGRTMAX ). (Programi se uvijek trebaju odnositi na signale u stvarnom vremenu pomoću oznake SIGRTMIN + 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ću signoja (2), prateća vrijednost (bilo cijeli broj ili pokazivač) može se poslati uz signal. Ako postupak prijama uspostavlja rukovatelj za ovaj signal pomoću SA_SIGACTION zastavice na sigaction (2), tada ona može dobiti te podatke preko polja si_value strukture siginfo_t kao drugog argumenta rukovatelju. 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. (Naime, 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.
To se ograničenje može promatrati (i uz privilegiju) mijenjati preko / proc / sys / kernel / rtsig-max datoteke. 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: Upotrijebite naredbu čovjek ( % man ) kako biste vidjeli kako se naredba koristi na vašem računalu.