Skip to main content

Signál - příkaz Linux / Unix

Surah Baqarah, 1 of the World's Best Quran Recitation in 50+ Languages (Smět 2025)

Surah Baqarah, 1 of the World's Best Quran Recitation in 50+ Languages (Smět 2025)
Anonim

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álHodnotaAkceKomentář
nebo smrti řídícího procesu
SIGINT2ObdobíPřerušení z klávesnice
SIGQUIT3JádroUkončete z klávesnice
SIGILL4JádroNelegální instrukce
SIGABRT6JádroZrušit signál z přerušit (3)
SIGFPE8JádroVýjimka s pohyblivou čárou
SIGKILL9ObdobíZabijte signál
SIGSEGV11JádroNeplatná reference paměti
SIGPIPE13ObdobíZlomené potrubí: zapište do potrubí bez čteček
SIGALRM14ObdobíČasový signál z poplach (2)
SIGTERM15ObdobíSignál ukončení
SIGUSR130,10,16ObdobíUživatelsky definovaný signál 1
SIGUSR231,12,17ObdobíUživatelsky definovaný signál 2
SIGCHLD20,17,18IgnDítě přestalo nebo skončilo
SIGCONT19,18,25 Pokračujte, pokud je zastaven
SIGSTOP17,19,23StopStop proces
SIGTSTP18,20,24StopZastavte se na tty
SIGTTIN21,21,26Stoptty vstup pro proces na pozadí
SIGTTOU22,22,27Stoptty 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álHodnotaAkceKomentář
SIGPOLL ObdobíPoložitelná událost (Sys V). Synonymum SIGIO
SIGPROF27,27,29ObdobíVypršel časový limit profilování
SIGSYS12,-,12JádroŠpatný argument pro rutinu (SVID)
SIGTRAP5JádroZachycovač tras / zlom
SIGURG16,23,21IgnNaléhavá podmínka na zásuvce (4.2 BSD)
SIGVTALRM26,26,28ObdobíVirtuální budík (4.2 BSD)
SIGXCPU24,24,30JádroPřekročen časový limit CPU (4.2 BSD)
SIGXFSZ25,25,31JádroLimit 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álHodnotaAkceKomentář
SIGEMT7,-,7Období
SIGSTKFLT-,16,-ObdobíChyba stacků na koprocesoru (nevyužitá)
SIGIO23,29,22ObdobíI / O nyní možné (4.2 BSD)
SIGCLD-,-,18IgnSynonymum pro SIGCHLD
SIGPWR29,30,19ObdobíVýpadek napájení (systém V)
SIGINFO29,-,- Synonymum pro SIGPWR
SIGLOST-,-,-ObdobíZámek souboru byl ztracen
SIGWINCH28,28,20IgnSigná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:

  1. 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.
  2. 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.
  3. 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.