Skip to main content

Signal - Linux / Unix Command

Signals in Linux/Unix (Juni 2025)

Signals in Linux/Unix (Juni 2025)

Indholdsfortegnelse:

Anonim

Linux understøtter begge POSIX pålidelige signaler (herefter "standard signaler") og POSIX real-time signaler.

Standard Signaler

Linux understøtter standardsignalerne nedenfor. Flere signalnumre er arkitekturafhængige, som angivet i kolonnen "Værdi". (Hvor tre værdier er angivet, gælder den første for alfa og sparc, den midterste for i386, ppc og sh, og den sidste til mips.

A - angiver, at et signal er fraværende på den tilsvarende arkitektur.)

Indtastningerne i kolonnen "Action" i tabellen angiver standard handling for signalet som følger:

Semester

Standard handling er at afslutte processen.

Ign

Standard handling er at ignorere signalet.

Core

Standard handling er at afslutte processen og dump kerne.

Hold op

Standard handling er at stoppe processen.

Først signalerne beskrevet i den oprindelige POSIX.1 standard.

SignalVærdiHandlingKommentar
eller død af kontrolprocessen
SIGINT2SemesterAfbryd fra tastaturet
SIGQUIT3CoreAfslut fra tastaturet
SIGILL4CoreUlovlig instruktion
SIGABRT6CoreAfbryd signal fra abort (3)
SIGFPE8CoreFlydende punkt undtagelse
SIGKILL9SemesterDræbte signal
SIGSEGV11CoreUgyldig hukommelsesreference
SIGPIPE13SemesterBrækket rør: skriv til rør uden læsere
SIGALRM14SemesterTimer signal fra alarm (2)
SIGTERM15SemesterAfslutningssignal
SIGUSR130,10,16SemesterBrugerdefineret signal 1
SIGUSR231,12,17SemesterBrugerdefineret signal 2
SIGCHLD20,17,18IgnBarn stoppet eller afsluttet
SIGCONT19,18,25 Fortsæt, hvis stoppet
SIGSTOP17,19,23Hold opStop proces
SIGTSTP18,20,24Hold opStop talt ved tty
SIGTTIN21,21,26Hold optty input til baggrundsproces
SIGTTOU22,22,27Hold optty output til baggrundsproces

SignalerneSIGKILL ogSIGSTOP kan ikke fanges, blokeres eller ignoreres.

Dernæst signalerne ikke i POSIX.1 standarden, men beskrevet i SUSv2 og SUSv3 / POSIX 1003.1-2001.

SignalVærdiHandlingKommentar
SIGPOLL SemesterPollable event (Sys V). Synonym af SIGIO
SIGPROF27,27,29SemesterProfileringstiden udløbet
SIGSYS12,-,12CoreDårlig argument til rutine (SVID)
SIGTRAP5CoreTrace / breakpoint trap
SIGURG16,23,21IgnHaster tilstand på stikkontakt (4,2 BSD)
SIGVTALRM26,26,28SemesterVirtuelt vækkeur (4,2 BSD)
SIGXCPU24,24,30CoreCPU-tidsgrænse overskredet (4,2 BSD)
SIGXFSZ25,25,31CoreFilstørrelsesgrænse overskredet (4,2 BSD)

Op til og med Linux 2.2, standardadfærd forSIGSYS, SIGXCPU, SIGXFSZ, og (på andre arkitekturer end SPARC og MIPS)SIGBUS var at afslutte processen (uden kernedump). (På nogle andre Unices er standard handling forSIGXCPU ogSIGXFSZ er at afslutte processen uden et kernedump.) Linux 2.4 er i overensstemmelse med POSIX 1003.1-2001-kravene til disse signaler og afslutter processen med et kernedump.

Næste forskellige andre signaler.

SignalVærdiHandlingKommentar
SIGEMT7,-,7Semester
SIGSTKFLT-,16,-SemesterStackfejl på coprocessor (ubrugt)
SIGIO23,29,22SemesterI / O nu muligt (4,2 BSD)
SIGCLD-,-,18IgnEt synonym for SIGCHLD
SIGPWR29,30,19SemesterStrømsvigt (System V)
SIGINFO29,-,- Et synonym for SIGPWR
SIGLOST-,-,-SemesterFillås tabt
SIGWINCH28,28,20IgnWindow resize signal (4,3 BSD, Sun)
SIGUNUSED-,31,-SemesterUbrugt signal (bliver SIGSYS)

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

SIGEMT er ikke specificeret i POSIX 1003.1-2001, men det vises aldrig uden for de fleste andre Unices, hvor standardhandlingen typisk er at afslutte processen med et kernedump.

SIGPWR (som ikke er angivet i POSIX 1003.1-2001), ignoreres som standard på de andre Unices, hvor den vises.

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

Realtidssignaler

Linux understøtter realtidssignaler som oprindeligt defineret i real-time-udvidelserne POSIX.4 (og nu inkluderet i POSIX 1003.1-2001). Linux understøtter 32 realtidssignaler, nummereret fra 32 (SIGRTMIN) til 63 (SIGRTMAX). (Programmer skal altid referere til realtidssignaler ved brug af notationSIGRTMIN+ n, da rækkevidde af realtidssignalantal varierer over Unices.)

I modsætning til standardsignaler har realtidssignaler ingen foruddefinerede betydninger: hele sæt realtids signaler kan bruges til applikationsdefinerede formål. (Bemærk dog, at implementeringen af ​​LinuxThreads bruger de første tre real-time signaler.)

Standardhandlingen for et uhåndteret realtidssignal er at afslutte modtagelsesprocessen.

Realtidssignaler skelnes af følgende:

  1. Flere forekomster af realtidssignaler kan være i kø. I modsætning hertil, hvis flere forekomster af et standardsignal leveres, mens signalet for øjeblikket er blokeret, er der kun en forekomst i køen.
  2. Hvis signalet sendes medsigqueue(2) kan en ledsagende værdi (enten et helt tal eller en pointer) sendes med signalet. Hvis modtagelsesprocessen etablerer en håndterer til dette signal ved hjælp afSA_SIGACTION flag tilsigaction(2) så kan den få disse data via si_value felt af siginfo_t struktur bestået som det andet argument til handleren. Desuden er det si_pid og si_uid felter i denne struktur kan bruges til at opnå PID og ægte bruger-ID for processen, der sender signalet.
  3. Realtidssignaler leveres i en garanteret rækkefølge. Flere realtidssignaler af samme type leveres i den rækkefølge, de blev sendt. Hvis forskellige realtidssignaler sendes til en proces, leveres de ud fra det laveste nummererede signal. (F.eks. Ringe signaler har højeste prioritet.)

Hvis både standard og realtidssignaler afventer en proces, efterlader POSIX det uspecificeret, hvilket leveres først. Linux, som mange andre implementeringer, prioriterer standardsignaler i dette tilfælde.

Ifølge POSIX skal en implementering tillade, at mindst _POSIX_SIGQUEUE_MAX (32) realtidssignaler skal være i kø i en proces. Men i stedet for at placere en grænse pr. Proces, indfører Linux en systemgrænse for antallet af kø i realtidssignaler for alle processer.

Denne grænse kan ses (og med privilegium) ændret via / Proc / sys / kernel / rtsig-max fil. En relateret fil, / Proc / sys / kernel / rtsig-max , kan bruges til at finde ud af, hvor mange realtidssignaler der for øjeblikket er i kø.

OVERFORM TIL

POSIX.1

Vigtig: Brug mand kommando ( % mand ) for at se, hvordan en kommando bruges på din computer.