Skip to main content

Signal - Linux / Unix Command

Signals in Linux/Unix (Juni- 2026)

Signals in Linux/Unix (Juni- 2026)
Anonim

Linux ondersteunt zowel POSIX-betrouwbare signalen (hierna "standaardsignalen") als POSIX-realtime-signalen.

Standaardsignalen

Linux ondersteunt de onderstaande standaardsignalen. Verschillende signaalnummers zijn architectuurafhankelijk, zoals aangegeven in de kolom "Waarde". (Waar drie waarden worden gegeven, is de eerste meestal geldig voor alpha en sparc, de middelste voor i386, ppc en sh, en de laatste voor mips.

A - geeft aan dat een signaal afwezig is in de overeenkomstige architectuur.)

De vermeldingen in de kolom 'Actie' van de tabel geven de standaardactie voor het signaal als volgt aan:

Termijn

Standaardactie is om het proces te beëindigen.

ign

Standaardactie is om het signaal te negeren.

Kern

Standaardactie is om het proces te beëindigen en core te dumpen.

Hou op

Standaardactie is om het proces te stoppen.

Eerst de signalen beschreven in de originele POSIX.1-standaard.

SignaalWaardeActieCommentaar
of de dood van het controleproces
SIGINT2TermijnOnderbreking van toetsenbord
SIGQUIT3KernSluit het toetsenbord af
SIGILL4KernOngeldige instructie
SIGABRT6KernAnnuleer signaal van afbreken (3)
SIGFPE8KernDrijvende-komma-uitzondering
SIGKILL9TermijnDood signaal
SIGSEGV11KernOngeldige geheugenreferentie
SIGPIPE13TermijnGebroken pijp: schrijf naar pijp zonder lezers
SIGALRM14TermijnTimersignaal van alarm (2)
SIGTERM15TermijnBeëindiging signaal
SIGUSR130,10,16TermijnDoor de gebruiker gedefinieerd signaal 1
SIGUSR231,12,17TermijnDoor de gebruiker gedefinieerd signaal 2
SIGCHLD20,17,18ignKind gestopt of beëindigd
SIGCONT19,18,25 Doorgaan als gestopt
SIGSTOP17,19,23Hou opStop het proces
SIGTSTP18,20,24Hou opStop getypt om tty
SIGTTIN21,21,26Hou optty-invoer voor achtergrondproces
SIGTTOU22,22,27Hou optty-uitvoer voor achtergrondproces

De signalenSIGKILL enSIGSTOP kan niet worden gepakt, geblokkeerd of genegeerd.

Vervolgens de signalen niet in de POSIX.1-standaard, maar beschreven in SUSv2 en SUSv3 / POSIX 1003.1-2001.

SignaalWaardeActieCommentaar
SIGPOLL TermijnOpvouwbare gebeurtenis (Sys V). Synoniem van SIGIO
SIGPROF27,27,29TermijnProfiling timer verlopen
SIGSYS12,-,12KernSlecht argument voor routine (SVID)
SIGTRAP5KernTrace / breekpunt val
SIGURG16,23,21ignDringende conditie op socket (4.2 BSD)
SIGVTALRM26,26,28TermijnVirtuele wekker (4.2 BSD)
SIGXCPU24,24,30KernCPU-tijdslimiet overschreden (4.2 BSD)
SIGXFSZ25,25,31KernMaximale bestandsgrootte overschreden (4.2 BSD)

Tot en met Linux 2.2 is het standaardgedrag voorSIGSYS, SIGXCPU, SIGXFSZen (op andere architecturen dan SPARC en MIPS)SIGBUS was om het proces te beëindigen (zonder kerndump). (Op sommige andere Unices is de standaardactie voorSIGXCPU enSIGXFSZ is om het proces te beëindigen zonder een core dump.) Linux 2.4 voldoet aan de vereisten van POSIX 1003.1-2001 voor deze signalen en beëindigt het proces met een core dump.

Volgende verschillende andere signalen.

SignaalWaardeActieCommentaar
SIGEMT7,-,7Termijn
SIGSTKFLT-,16,-TermijnStapelfout op coprocessor (ongebruikt)
SIGIO23,29,22TermijnI / O nu mogelijk (4.2 BSD)
SIGCLD-,-,18ignEen synoniem voor SIGCHLD
SIGPWR29,30,19TermijnStroomuitval (systeem V)
SIGINFO29,-,- Een synoniem voor SIGPWR
SIGLOST-,-,-TermijnBestandsslot kwijt
SIGWINCH28,28,20ignVenster formaat wijzigen (4.3 BSD, zon)
SIGUNUSED-,31,-TermijnOngebruikt signaal (zal SIGSYS zijn)

(Signaal 29 isSIGINFO / SIGPWR op een alpha maarSIGLOST op een sparc.)

SIGEMT is niet gespecificeerd in POSIX 1003.1-2001, maar verschijnt desondanks op de meeste andere Unices, waar de standaardactie typisch is om het proces te beëindigen met een core dump.

SIGPWR (die niet is opgegeven in POSIX 1003.1-2001) wordt standaard genegeerd op die andere Unices waar deze wordt weergegeven.

SIGIO (die niet is opgegeven in POSIX 1003.1-2001) wordt standaard genegeerd op verschillende andere Unices.

Real-time signalen

Linux ondersteunt real-time signalen zoals oorspronkelijk gedefinieerd in de real-time uitbreidingen POSIX.4 (en nu opgenomen in POSIX 1003.1-2001). Linux ondersteunt 32 realtime signalen, genummerd van 32 (SIGRTMIN) tot 63 (SIGRTMAX). (Programma's moeten altijd verwijzen naar realtime signalen met behulp van notatieSIGRTMIN+ n, omdat het bereik van real-time signaalnummers verschilt tussen Unices.)

In tegenstelling tot standaardsignalen hebben real-time signalen geen vooraf gedefinieerde betekenissen: de volledige set van real-time signalen kan worden gebruikt voor toepassingsdoelen. (Merk echter op dat de implementatie van LinuxThreads de eerste drie real-time signalen gebruikt.)

De standaardactie voor een onverwerkt real-time signaal is om het ontvangstproces te beëindigen.

Real-time signalen onderscheiden zich door het volgende:

  1. Meerdere instanties van realtime signalen kunnen in de wachtrij worden geplaatst. Als daarentegen meerdere exemplaren van een standaardsignaal worden geleverd terwijl dat signaal momenteel is geblokkeerd, staat er slechts één exemplaar in de wachtrij.
  2. Als het signaal wordt verzonden metsigqueue(2), een begeleidende waarde (een geheel getal of een aanwijzer) kan met het signaal worden verzonden. Als het ontvangende proces een handler voor dit signaal instelt met behulp van deSA_SIGACTION vlag naarsigaction(2) dan kan het deze gegevens verkrijgen via de si_value veld van de siginfo_t structuur doorgegeven als het tweede argument aan de handler. Verder is de si_pid en si_uid velden van deze structuur kunnen worden gebruikt voor het verkrijgen van de PID en de echte gebruikers-ID van het proces dat het signaal verzendt.
  3. Real-time signalen worden in een gegarandeerde volgorde afgeleverd. Meerdere realtime signalen van hetzelfde type worden afgeleverd in de volgorde waarin ze zijn verzonden. Als verschillende real-time signalen naar een proces worden verzonden, worden ze afgeleverd beginnend met het signaal met het laagste nummer. (Dat wil zeggen, laag-genummerde signalen hebben de hoogste prioriteit.)

Als zowel standaard- als realtime-signalen voor een proces in behandeling zijn, laat POSIX het ongespecificeerd wat als eerste wordt afgeleverd. Linux, zoals vele andere implementaties, geeft in dit geval prioriteit aan standaardsignalen.

Volgens POSIX moet een implementatie het mogelijk maken dat ten minste _POSIX_SIGQUEUE_MAX (32) realtime signalen in de wachtrij worden geplaatst voor een proces. In plaats van een limiet per proces te plaatsen, legt Linux echter een systeembrede limiet op het aantal in de wachtrij geplaatste realtime signalen voor alle processen.

Deze limiet kan worden bekeken (en met privileges) via de / Proc / sys / kernel / rtsig-max het dossier. Een gerelateerd bestand, / Proc / sys / kernel / rtsig-max , kan worden gebruikt om te achterhalen hoeveel real-time signalen momenteel in de wachtrij staan.

VOLDOET AAN

POSIX.1

Belangrijk: Gebruik de man commando ( % man ) om te zien hoe een opdracht wordt gebruikt op uw specifieke computer.