Linux podporuje obě spolehlivé signály POSIX (dále jen "standardní signály") a signály POSIX v reálném čase.
Standardní signály
Linux podporuje standardní signály uvedené níže. Několik čísel signálů závisí na architektuře, jak je uvedeno ve sloupci "Hodnota". (Kde jsou uvedeny tři hodnoty, první je obvykle platná pro alfa a sparc, střední pro i386, ppc a sh a poslední pro mips.
A - označuje, že na příslušné architektuře chybí signál.)
Položky ve sloupci "Akce" tabulky určují výchozí akci pro signál, a to následujícím způsobem:
Období
Výchozí akce je ukončení procesu.
Ign
Výchozí akce je ignorovat signál.
Jádro
Výchozí akce je ukončení procesu a výpisu jádra.
Stop
Výchozí akce je ukončení procesu.
Nejprve signály popsané v původním standardu POSIX.1.
Signál | Hodnota | Akce | Komentář |
nebo smrti řídícího procesu | |||
SIGINT | 2 | Období | Přerušení z klávesnice |
SIGQUIT | 3 | Jádro | Ukončete z klávesnice |
SIGILL | 4 | Jádro | Nelegální instrukce |
SIGABRT | 6 | Jádro | Zrušit signál z přerušit (3) |
SIGFPE | 8 | Jádro | Výjimka s pohyblivou čárou |
SIGKILL | 9 | Období | Zabijte signál |
SIGSEGV | 11 | Jádro | Neplatná reference paměti |
SIGPIPE | 13 | Období | Zlomené potrubí: zapište do potrubí bez čteček |
SIGALRM | 14 | Období | Časový signál z poplach (2) |
SIGTERM | 15 | Období | Signál ukončení |
SIGUSR1 | 30,10,16 | Období | Uživatelsky definovaný signál 1 |
SIGUSR2 | 31,12,17 | Období | Uživatelsky definovaný signál 2 |
SIGCHLD | 20,17,18 | Ign | Dítě přestalo nebo skončilo |
SIGCONT | 19,18,25 | Pokračujte, pokud je zastaven | |
SIGSTOP | 17,19,23 | Stop | Stop proces |
SIGTSTP | 18,20,24 | Stop | Zastavte se na tty |
SIGTTIN | 21,21,26 | Stop | tty vstup pro proces na pozadí |
SIGTTOU | 22,22,27 | Stop | tty výstup pro proces pozadí |
SignálySIGKILL aSIGSTOP nemůže být chycena, zablokována nebo ignorována.
Dále signály, které nejsou v standardu POSIX.1, ale popsány v SUSv2 a SUSv3 / POSIX 1003.1-2001.
Signál | Hodnota | Akce | Komentář |
SIGPOLL | Období | Položitelná událost (Sys V). Synonymum SIGIO | |
SIGPROF | 27,27,29 | Období | Vypršel časový limit profilování |
SIGSYS | 12,-,12 | Jádro | Špatný argument pro rutinu (SVID) |
SIGTRAP | 5 | Jádro | Zachycovač tras / zlom |
SIGURG | 16,23,21 | Ign | Naléhavá podmínka na zásuvce (4.2 BSD) |
SIGVTALRM | 26,26,28 | Období | Virtuální budík (4.2 BSD) |
SIGXCPU | 24,24,30 | Jádro | Překročen časový limit CPU (4.2 BSD) |
SIGXFSZ | 25,25,31 | Jádro | Limit velikosti souboru byl překročen (4.2 BSD) |
Až do a včetně Linuxu 2.2, výchozího chování proSIGSYS, SIGXCPU, SIGXFSZ, a (na jiných architekturách než SPARC a MIPS)SIGBUS bylo ukončení procesu (bez jaderného výpisu). (U některých dalších Unic je výchozí akce proSIGXCPU aSIGXFSZ je ukončit proces bez výpisu jádra.) Linux 2.4 vyhovuje požadavkům POSIX 1003.1-2001 pro tyto signály a ukončí proces s výpisem jádra.
Další různé další signály.
Signál | Hodnota | Akce | Komentář |
SIGEMT | 7,-,7 | Období | |
SIGSTKFLT | -,16,- | Období | Chyba stacků na koprocesoru (nevyužitá) |
SIGIO | 23,29,22 | Období | I / O nyní možné (4.2 BSD) |
SIGCLD | -,-,18 | Ign | Synonymum pro SIGCHLD |
SIGPWR | 29,30,19 | Období | Výpadek napájení (systém V) |
SIGINFO | 29,-,- | Synonymum pro SIGPWR | |
SIGLOST | -,-,- | Období | Zámek souboru byl ztracen |
SIGWINCH | 28,28,20 | Ign | Signál změny velikosti okna (4.3 BSD, Sun) |
SIGUNUSED | -,31,- | Období | Nepoužitý signál (bude SIGSYS) |
(Signál 29 jeSIGINFO / SIGPWR na alfa aleSIGLOST na sparc.)
SIGEMT není uveden v POSIX 1003.1-2001, ale nikdy se objeví na většině ostatních Unic, kde výchozí akce obvykle ukončí proces s výpisem jádra.
SIGPWR (který není specifikován v POSIX 1003.1-2001) je obvykle ignorován ve výchozím nastavení u ostatních Unic, kde se zobrazuje.
SIGIO (který není specifikován v POSIX 1003.1-2001) je ve výchozím nastavení ignorován na několika dalších jednotkách.
Signály v reálném čase
Linux podporuje signály v reálném čase, jak byly původně definovány v rozšířeních POSIX.4 v reálném čase (a nyní jsou zahrnuty v POSIXu 1003.1-2001). Linux podporuje 32 signálů v reálném čase, číslovaných od 32 (SIGRTMIN) až 63 (SIGRTMAX). (Programy by měly vždy odkazovat na signály v reálném čase pomocí notaceSIGRTMIN+ n, protože rozsah čísel signálů v reálném čase se mění v jednotkách.)
Na rozdíl od standardních signálů signály v reálném čase nemají předem definované významy: celá sada signálů v reálném čase může být použita pro účely definované aplikací. (Všimněte si však, že implementace LinuxThreads používá první tři signály v reálném čase.)
Výchozí akcí pro neošetřený signál v reálném čase je ukončení procesu přijímání.
Signály v reálném čase se vyznačují následujícími skutečnostmi:
- Více instancí signálů v reálném čase může být ve frontě. Naproti tomu, pokud jsou vysílány více instancí standardního signálu, zatímco je tento signál aktuálně zablokován, je pouze jedna instance zařazena do fronty.
- Pokud je signál odeslán pomocísigqueue(2) může být vyslána doprovodná hodnota (buď celé číslo nebo ukazatel) se signálem. Pokud přijímající proces vytvoří obsluhu tohoto signálu pomocíSA_SIGACTION vlajka nasigaction(2) pak může tato data získat prostřednictvím si_value oblast siginfo_t struktura prošla druhým argumentem pro obsluhu. Kromě toho si_pid a si_uid pole této struktury lze použít k získání PID a skutečné ID uživatele procesu odesílání signálu.
- Signály v reálném čase jsou dodávány v zaručeném pořadí. Více signálů v reálném čase stejného typu je doručeno v pořadí, v jakém byly odeslány. Pokud jsou do procesu odesílány různé signály v reálném čase, jsou dodávány s počátečním signálem s nejnižším číslem. (Tzn. Signály s nízkým číslem mají nejvyšší prioritu.)
Pokud pro proces probíhají jak standardní signály, tak signály v reálném čase, POSIX zanechává nejprve neurčené, které jsou dodány. Linux, stejně jako mnoho dalších implementací, dává přednost standardním signálům v tomto případě.
Podle POSIX by implementace měla umožňovat, aby alespoň alespoň _POSIX_SIGQUEUE_MAX (32) signály v reálném čase byly zařazeny do fronty procesu. Spíše než umístit limity na proces, Linux zavádí systémový limit pro počet frontálních signálů v reálném čase pro všechny procesy.
Tento limit lze prohlížet (a s oprávněním) měnit prostřednictvím / proc / sys / kernel / rtsig-max soubor. Související soubor, / proc / sys / kernel / rtsig-max , lze zjistit, kolik signálů v reálném čase je v současné době zařazeno do fronty.
KONFORMACE DO
POSIX.1
Důležité: Použijte muž příkaz ( % muž ), abyste zjistili, jak je v daném počítači použit příkaz.