Skip to main content

Signal - Linux / Unix Command

Signals in Linux/Unix (Juni 2026)

Signals in Linux/Unix (Juni 2026)
Anonim

Linux støtter både POSIX pålitelige signaler (heretter "standard signaler") og POSIX sanntids signaler.

Standard Signaler

Linux støtter standardsignalene som er oppført nedenfor. Flere signalnumre er arkitekturavhengige, som angitt i kolonnen "Verdi". (Hvor tre verdier er gitt, er den første vanligvis gyldig for alfa og sparc, den midterste for i386, ppc og sh, og den siste for mips.

A - angir at et signal er fraværende på den tilsvarende arkitekturen.)

Oppføringene i «Handling» -kolonnen i tabellen angir standardhandling for signalet, som følger:

Begrep

Standard handling er å avslutte prosessen.

IGN

Standard handling er å ignorere signalet.

Kjerne

Standard handling er å avslutte prosessen og dumpe kjernen.

Stoppe

Standard handling er å stoppe prosessen.

Først signalene beskrevet i den opprinnelige POSIX.1-standarden.

SignalVerdiHandlingKommentar
eller død av kontrollprosessen
SIGINT2BegrepAvbryt fra tastaturet
SIGQUIT3KjerneAvslutt fra tastaturet
SIGILL4KjerneUlovlig instruksjon
SIGABRT6KjerneAvbryt signal fra avbryte (3)
SIGFPE8KjerneFlytende punkt unntak
SIGKILL9BegrepDrep signal
SIGFPE11KjerneUgyldig minne referanse
SIGPIPE13BegrepBrutt pipe: skriv til rør uten lesere
SIGALRM14BegrepTimersignal fra alarm (2)
SIGTERM15BegrepOppsigelsessignal
SIGUSR130,10,16BegrepBrukerdefinert signal 1
SIGUSR231,12,17BegrepBrukerdefinert signal 2
SIGCHLD20,17,18IGNBarn stoppet eller avsluttet
SIGCONT19,18,25 Fortsett hvis stoppet
SIGSTOP17,19,23StoppeStopp prosessen
SIGTSTP18,20,24StoppeStopp skrevet på tty
SIGTTIN21,21,26Stoppetty-inngang for bakgrunnsprosess
SIGTTOU22,22,27Stoppetty-utgang for bakgrunnsprosess

SignaleneSIGKILL ogSIGSTOP kan ikke bli fanget, blokkert eller ignorert.

Neste signaler ikke i POSIX.1-standarden, men beskrevet i SUSv2 og SUSv3 / POSIX 1003.1-2001.

SignalVerdiHandlingKommentar
SIGPOLL BegrepPollable event (Sys V). Synonym av SIGIO
SIGPROF27,27,29BegrepProfileringstiden utløp
SIGSYS12,-,12KjerneDårlig argument til rutine (SVID)
SIGTRAP5KjerneTrace / breakpoint trap
SIGURG16,23,21IGNHaster tilstand på stikkontakt (4,2 BSD)
SIGVTALRM26,26,28BegrepVirtual vekkerklokke (4,2 BSD)
SIGXCPU24,24,30KjerneCPU tidsgrense overskredet (4,2 BSD)
SIGXFSZ25,25,31KjerneFilstørrelsesgrense overskredet (4,2 BSD)

Opp til og med Linux 2.2, standard oppførsel forSIGSYS, SIGXCPU, SIGXFSZ, og (på andre arkitekturer enn SPARC og MIPS)SIGBUS var å avslutte prosessen (uten kjernedump). (På noen andre Unics er standard handling forSIGXCPU ogSIGXFSZ er å avslutte prosessen uten kjernedump.) Linux 2.4 samsvarer med POSIX 1003.1-2001-kravene for disse signalene, og avslutter prosessen med en kjernedump.

Neste forskjellige andre signaler.

SignalVerdiHandlingKommentar
SIGEMT7,-,7Begrep
SIGSTKFLT-,16,-BegrepStackfeil på coprocessor (ubrukt)
SIGIO23,29,22BegrepI / O nå mulig (4,2 BSD)
SIGCLD-,-,18IGNEt synonym for SIGCHLD
SIGPWR29,30,19BegrepStrømbrudd (System V)
SIGINFO29,-,- Et synonym for SIGPWR
SIGLOST-,-,-BegrepFillås tapt
SIGWINCH28,28,20IGNWindow resize signal (4,3 BSD, Sun)
SIGUNUSED-,31,-BegrepUbrukt signal (blir SIGSYS)

(Signal 29 erSIGINFO / SIGPWR på en alfa menSIGLOST på en sparc.)

SIGEMT er ikke angitt i POSIX 1003.1-2001, men det vises aldri i alle de fleste andre Unices, hvor standardhandlinger vanligvis stopper prosessen med en kjernedump.

SIGPWR (som ikke er spesifisert i POSIX 1003.1-2001), ignoreres som standard på de andre enhetene der den vises.

SIGIO (som ikke er spesifisert i POSIX 1003.1-2001) ignoreres som standard på flere andre Unices.

Realtidssignaler

Linux støtter sanntidssignaler som opprinnelig definert i POSIX.4-sanntidsutvidelsene (og nå inkludert i POSIX 1003.1-2001). Linux støtter 32 sanntids-signaler, nummerert fra 32 (SIGRTMIN) til 63 (SIGRTMAX). (Programmer bør alltid referere til sanntids signaler ved hjelp av notasjonSIGRTMIN+ n, siden rekkevidden av sanntids-signalnummer varierer over Unices.)

I motsetning til standardsignaler har realtidssignaler ikke forhåndsdefinerte betydninger: hele settet av sanntids signaler kan brukes til applikasjonsdefinerte formål. (Merk imidlertid at implementeringen av LinuxThreads bruker de første tre sanntids signaler.)

Standardhandlingen for et ubehandlet sanntids-signal er å avslutte mottaksprosessen.

Real-time-signaler skiller seg ut fra følgende:

  1. Flere forekomster av sanntids signaler kan være i kø. I motsetning dersom flere forekomster av et standardsignal leveres mens signalet for øyeblikket er blokkert, er bare en forekomst i kø.
  2. Hvis signalet sendes medsigqueue(2), en tilhørende verdi (enten et heltall eller en peker) kan sendes med signalet. Hvis mottaksprosessen oppretter en handler for dette signalet ved hjelp avSA_SIGACTION flagg tilsigaction(2) så kan den hente disse dataene via si_value feltet av siginfo_t struktur bestått som det andre argumentet til handleren. Videre er det si_pid og si_uid feltene i denne strukturen kan brukes til å oppnå PID og ekte bruker-ID for prosessen som sender signalet.
  3. Realtidssignaler leveres i en garantert rekkefølge. Flere sanntidssignaler av samme type leveres i den rekkefølgen de ble sendt. Hvis forskjellige sanntidssignaler sendes til en prosess, blir de levert med det laveste nummererte signalet. (Dvs. lavtallede signaler har høyeste prioritet.)

Hvis både standard og sanntidssignaler venter på en prosess, etterlater POSIX det uspesifisert som leveres først. Linux, som mange andre implementeringer, prioriterer standardsignaler i dette tilfellet.

Ifølge POSIX bør en implementering tillate at minst _POSIX_SIGQUEUE_MAX (32) sanntids signaler blir satt i kø til en prosess. I stedet for å legge inn en grense per prosess, legger Linux imidlertid en systembegrenset grense på antall sanntidssignaler i kø for alle prosesser.

Denne grensen kan vises (og med privilegium) endret via / Proc / sys / kernel / rtsig-max fil. En relatert fil, / Proc / sys / kernel / rtsig-max , kan brukes til å finne ut hvor mange sanntids signaler som er i kø.

OVERFORM TIL

POSIX.1

Viktig: Bruke Mann kommando ( % Mann ) for å se hvordan en kommando brukes på din datamaskin.