Linux podporuje obe spoľahlivé signály POSIX (ďalej len "štandardné signály") a signály POSIX v reálnom čase.
Štandardné signály
Linux podporuje štandardné signály uvedené nižšie. Niektoré čísla signálov sú závislé od architektúry, ako je uvedené v stĺpci "Hodnota". (Kde sú uvedené tri hodnoty, prvý z nich je zvyčajne platný pre alfa a sparc, stredný pre i386, ppc a sh a posledný pre mips.
A - znamená, že na príslušnej architektúre chýba signál.)
Položky v stĺpci "Akcia" v tabuľke určujú predvolenú akciu signálu takto:
termín
Predvolenou akciou je ukončenie procesu.
IGN
Predvolenou akciou je ignorovanie signálu.
jadro
Predvolenou akciou je ukončenie procesu a výpisu jadra.
prestať
Predvolenou akciou je zastavenie procesu.
Najskôr signály opísané v pôvodnom štandarde POSIX.1.
signál | hodnota | akčné | komentár |
alebo smrť kontrolného procesu | |||
SIGINT | 2 | termín | Prerušenie z klávesnice |
SIGQUIT | 3 | jadro | Ukončite klávesnicu |
Sigillo | 4 | jadro | Nezákonné pokyny |
SIGABRT | 6 | jadro | Zrušiť signál z prerušiť (3) |
SIGFPE | 8 | jadro | Výnimka s pohyblivým bodom |
SIGKILL | 9 | termín | Zabite signál |
SIGSEGV | 11 | jadro | Neplatná referencia pamäte |
sigpipe | 13 | termín | Zlomené potrubie: napíšte do potrubia bez čítačky |
SIGALRM | 14 | termín | Časový signál od poplach (2) |
SIGTERM | 15 | termín | Signál ukončenia |
SIGUSR1 | 30,10,16 | termín | Používateľsky definovaný signál 1 |
SIGUSR2 | 31,12,17 | termín | Používateľsky definovaný signál 2 |
SIGCHLD | 20,17,18 | IGN | Dieťa bolo zastavené alebo ukončené |
SIGCONT | 19,18,25 | Pokračujte, ak ste skončili | |
SIGSTOP | 17,19,23 | prestať | Stop proces |
SIGTSTP | 18,20,24 | prestať | Zastaviť napísané na tty |
SIGTTIN | 21,21,26 | prestať | tty vstup pre proces na pozadí |
SIGTTOU | 22,22,27 | prestať | tty výstup pre proces na pozadí |
SignálySIGKILL aSIGSTOP nemôžu byť chytené, zablokované alebo ignorované.
Ďalšie signály nie sú v štandarde POSIX.1, ale sú opísané v SUSv2 a SUSv3 / POSIX 1003.1-2001.
signál | hodnota | akčné | komentár |
SIGPOLL | termín | Položiteľná udalosť (Sys V). Synonymum SIGIO | |
SIGPROF | 27,27,29 | termín | Vypršal časovač profilovania |
SIGSYS | 12,-,12 | jadro | Nesprávny argument pre rutinu (SVID) |
SIGTRAP | 5 | jadro | Zachytenie trasovania / zlomenia |
SIGURG | 16,23,21 | IGN | Naliehavý stav na zásuvke (4.2 BSD) |
SIGVTALRM | 26,26,28 | termín | Virtuálne budík (4.2 BSD) |
SIGXCPU | 24,24,30 | jadro | Prekročenie časového limitu CPU (4.2 BSD) |
SIGXFSZ | 25,25,31 | jadro | Limit veľkosti súboru bol prekročený (4.2 BSD) |
Až do a vrátane Linuxu 2.2, predvolené správanie preSIGSYS, SIGXCPU, SIGXFSZ, a (na iných architektúrach ako SPARC a MIPS)SIGBUS bolo ukončiť proces (bez výpisu jadra). (Na niektorých ďalších jednotkách je predvolená akcia preSIGXCPU aSIGXFSZ je ukončenie procesu bez výpisu jadra.) Linux 2.4 vyhovuje požiadavkám POSIX 1003.1-2001 pre tieto signály a ukončuje proces s jadrom výpisu.
Ďalšie rôzne ďalšie signály.
signál | hodnota | akčné | komentár |
SIGEMT | 7,-,7 | termín | |
SIGSTKFLT | -,16,- | termín | Statická chyba koprocesora (nepoužívaná) |
Sigi | 23,29,22 | termín | I / O je teraz možné (4.2 BSD) |
SIGCLD | -,-,18 | IGN | Synonymom pre SIGCHLD |
SIGPWR | 29,30,19 | termín | Výpadok napájania (systém V) |
SIGINFO | 29,-,- | Synonymom pre SIGPWR | |
SIGLOST | -,-,- | termín | Záloha súboru sa stratila |
SIGWINCH | 28,28,20 | IGN | Signál zmeny veľkosti okna (4.3 BSD, Sun) |
SIGUNUSED | -,31,- | termín | Nepoužitý signál (bude SIGSYS) |
(Signál 29 jeSIGINFO / SIGPWR na alfa aleSIGLOST na sparc.)
SIGEMT nie je špecifikovaný v POSIX 1003.1-2001, ale napriek tomu sa objavuje vo väčšine ostatných Unic, kde jeho predvolená akcia zvyčajne ukončí proces s výpisom jadra.
SIGPWR (ktoré nie je uvedené v POSIX 1003.1-2001) je zvyčajne ignorované v predvolenom nastavení pre tie ostatné Unices, kde sa zobrazuje.
Sigi (ktorý nie je špecifikovaný v POSIX 1003.1-2001) je predvolene ignorovaný na niekoľkých ďalších jednotkách.
Signály v reálnom čase
Linux podporuje signály v reálnom čase, ktoré boli pôvodne definované v rozšíreniach POSIX.4 v reálnom čase (a teraz sú zahrnuté v POSIX 1003.1-2001). Linux podporuje 32 signálov v reálnom čase, číslovaných od 32 (SIGRTMIN) až 63 (SIGRTMAX). (Programy by sa vždy mali vzťahovať na signály v reálnom čase pomocou notácieSIGRTMIN+ n, pretože rozsah čísel signálov v reálnom čase sa v celej jednotke mení.)
Na rozdiel od štandardných signálov signály v reálnom čase nemajú vopred definované významy: celá sada signálov v reálnom čase môže byť použitá na účely definované aplikáciou. (Všimnite si však, že implementácia LinuxThreads používa prvé tri signály v reálnom čase.)
Predvolená akcia pre neošetrený signál v reálnom čase je ukončenie procesu prijímania.
Signály v reálnom čase sa vyznačujú nasledovnými:
- Mnohé prípady signálov v reálnom čase môžu byť zaradené do frontu. Na rozdiel od toho, ak sa dodáva viacnásobné inštancie štandardného signálu, zatiaľ čo je tento signál v súčasnosti zablokovaný, iba jedna inštancia je zaradená do frontu.
- Ak je signál poslaný pomocousigqueue(2) sa môže vyslať so signálom sprievodná hodnota (buď celé číslo alebo ukazovateľ). Ak prijímací proces vytvorí obsluhu pre tento signál pomocouSA_SIGACTION flag nasigaction(2) potom môže tieto údaje získať prostredníctvom si_value oblasť siginfo_t štruktúra prešla ako druhý argument pre psovoda. Okrem toho si_pid a si_uid polia tejto štruktúry môžu byť použité na získanie PID a skutočného ID užívateľa procesu odosielania signálu.
- Signály v reálnom čase sú dodávané v zaručenom poradí. Viaceré signály v reálnom čase rovnakého typu sa doručujú v poradí, v akom boli odoslané. Ak sa do procesu odosielajú rôzne signály v reálnom čase, sú odovzdávané počnúc signálom s najnižším číslom. (T.j. signály s nízkym číslom majú najvyššiu prioritu.)
Ak sú v procese čakajúce štandardné aj signály v reálnom čase, POSIX to necháva nespecifikované, ktoré sa doručia ako prvé. Linux, rovnako ako mnohé iné implementácie, dáva prednosť štandardným signálom v tomto prípade.
Podľa POSIX by implementácia mala umožňovať, aby aspoň aspoň _POSIX_SIGQUEUE_MAX (32) signály v reálnom čase boli zaradené do frontu do procesu. Namiesto umiestnenia limitu na proces, však Linux zavádza celkový systémový limit počtu signálov v reálnom čase v reálnom čase pre všetky procesy.
Tento limit je možné zobraziť (a s oprávnením) zmenený prostredníctvom / Preco / sys / kernel / rtsig-max súboru. Súvisiaci súbor, / Preco / sys / kernel / rtsig-max , môžete zistiť, koľko signálov v reálnom čase je v súčasnosti zaradených do frontu.
KONFORMÁCIA DO
POSIX.1
dôležité: Použi muž príkaz ( % muž ), aby ste zistili, ako sa príkaz používa vo vašom konkrétnom počítači.