Skip to main content

Signal - Linux / Unix ukaz

Anonim

Linux podpira zanesljive signale POSIX (v nadaljnjem besedilu: standardni signali) in signale POSIX v realnem času.

Standardni signali

Linux podpira spodaj navedene standardne signale. Številne signalne številke so odvisne od arhitekture, kot je navedeno v stolpcu »Vrednost«. (Kadar so podane tri vrednosti, je prva običajna za alfa in sparc, srednja za i386, ppc in sh, in zadnja za mops.

A - označuje, da v ustrezni arhitekturi ni signala.)

Vnose v stolpcu »Dejanje« v tabeli določajo privzeto dejanje za signal, in sicer:

Izraz

Privzeto dejanje je postopek prekiniti.

Ign

Privzeto dejanje je prezreti signal.

Core

Privzeto dejanje je prekiniti postopek in dump core.

Stop

Privzeto dejanje je ustaviti postopek.

Najprej navedite signale, opisane v prvotnem standardu POSIX.1.

SignalVrednostUkrepKomentar
ali smrt kontrolnega procesa
SIGINT2IzrazPrekinite s tipkovnice
SIGQUIT3CoreKončaj s tipkovnice
SIGILL4CoreNezakonito navodilo
SIGABRT6CorePrekinite signal iz prekiniti (3)
SIGFPE8CoreIzjema iz plavajoče točke
SIGKILL9IzrazKill signal
SIGSEGV11CoreNeveljavna referenca pomnilnika
SIGPIPE13IzrazBroken cevi: pišite na cev brez bralcev
SIGALRM14IzrazČasovni signal od alarm (2)
SIGTERM15IzrazKončni signal
SIGUSR130,10,16IzrazUporabniško določen signal 1
SIGUSR231,12,17IzrazUporabniško določen signal 2
SIGCHLD20,17,18IgnOtrok se je ustavil ali končal
SIGCONT19,18,25 Nadaljujte, če ste ga ustavili
SIGSTOP17,19,23StopUstavi postopek
SIGTSTP18,20,24StopNehajte vnašati v TTY
SIGTTIN21,21,26Stoptty vnos za ozadje
SIGTTOU22,22,27Stoptty izhod za ozadje

SignaliSIGKILL inSIGSTOP ni mogoče ujeti, blokirati ali prezreti.

Nato signali niso v standardu POSIX.1, ampak so opisani v SUSv2 in SUSv3 / POSIX 1003.1-2001.

SignalVrednostUkrepKomentar
SIGPOLL IzrazZgodovinski dogodek (Sys V). Sinonim za SIGIO
SIGPROF27,27,29IzrazČasovnik profiliranja je potekel
SIGSYS12,-,12CoreSlab argument za rutinsko (SVID)
SIGTRAP5CoreTrap / trap breakpoint
SIGURG16,23,21IgnNujno stanje na vtičnici (4,2 BSD)
SIGVTALRM26,26,28IzrazVirtualna budilka (4,2 BSD)
SIGXCPU24,24,30CoreČasovna omejitev CPU presega (4,2 BSD)
SIGXFSZ25,25,31CorePresežena omejitev velikosti datoteke (4,2 BSD)

Do in vključno z Linuxom 2.2, privzeto obnašanje zaSIGSYS, SIGXCPU, SIGXFSZ, in (glede arhitektur, razen SPARC in MIPS)SIGBUS je bil zaključiti postopek (brez jedrske dump). (Na nekaterih drugih Unices je privzeto dejanje zaSIGXCPU inSIGXFSZ je zaključiti postopek brez jedrnega odlagališča.) Linux 2.4 je v skladu s zahtevami POSIX 1003.1-2001 za te signale in zaključuje proces z odvodom jedra.

Naslednji različni drugi signali.

SignalVrednostUkrepKomentar
SIGEMT7,-,7Izraz
SIGSTKFLT-,16,-IzrazNapaka v stacku na koprocesorju (neuporabljena)
SIGIO23,29,22IzrazV / I je sedaj možno (4,2 BSD)
SIGCLD-,-,18IgnSinonim za SIGCHLD
SIGPWR29,30,19IzrazIzpad električne energije (sistem V)
SIGINFO29,-,- Sinonim za SIGPWR
SIGLOST-,-,-IzrazZaklepanje datoteke je izgubljeno
SIGWINCH28,28,20IgnSignal za spreminjanje velikosti oken (4,3 BSD, Sun)
SIGUNUSED-,31,-IzrazNeuporabljeni signal (bo SIGSYS)

(Signal 29 jeSIGINFO / SIGPWR na alfa, ampakSIGLOST na sparc.)

SIGEMT ni podan v POSIX 1003.1-2001, vendar se brez dvoma prikaže v večini drugih Unices, kjer je privzeto dejanje običajno končati proces z odvodom jedra.

SIGPWR (ki ni naveden v POSIX 1003.1-2001) je običajno privzeto prezrt na tistih drugih Unicesih, kjer se pojavi.

SIGIO (ki ni naveden v POSIX 1003.1-2001) je privzeto prezrt na več drugih Unices.

Signali v realnem času

Linux podpira signale v realnem času, kot so bili prvotno opredeljeni v razširitvah POSIX.4 v realnem času (zdaj vključeni v POSIX 1003.1-2001). Linux podpira 32 signalov v realnem času, oštevilčenih od 32 (SIGRTMIN) do 63 (SIGRTMAX). (Programi se morajo vedno nanašati na signale v realnem času z uporabo zapisaSIGRTMIN+ n, ker se razpon števila signalov v realnem času razlikuje po Unices.)

Za razliko od standardnih signalov signali v realnem času nimajo vnaprej določenih pomenov: celoten sklop signalov v realnem času se lahko uporablja za namene, določene za uporabo. (Upoštevajte, da implementacija LinuxThreads uporablja prve tri signale v realnem času.)

Privzeto dejanje za nepovezan signal v realnem času je, da prekine postopek prejema.

Signali v realnem času se razlikujejo po naslednjih značilnostih:

  1. Večkratne primere signala v realnem času je mogoče postaviti v čakalno vrsto. V nasprotju s tem, če je dostavljen več primerkov standardnega signala, medtem ko je ta signal trenutno blokiran, je v čakalni vrsti samo en primerek.
  2. Če je signal poslan z uporabosigqueue(2), lahko spremlja vrednost (bodisi celo število ali kazalec) s signalom. Če postopek prejema vzpostavlja vodilo za ta signal z uporaboSA_SIGACTION zastava vsigaction(2), potem lahko te podatke pridobi prek si_value polje siginfo_t Struktura je kot drugi argument vodila. Poleg tega si_pid in si_uid polja te strukture se lahko uporabijo za pridobitev PID in dejansko uporabniško identifikacijo procesa pošiljanja signala.
  3. Signali v realnem času se dostavljajo v zajamčenem naročilu. Večkratni signali iste vrste istega tipa so dostavljeni v zaporedju, v katerem so bili poslani. Če se v proces pošljejo različni signali v realnem času, se pošljejo z najmanjšim številom signalov. (I.e., signali z nizkim številom imajo največjo prednost.)

Če v procesu čakajo standardni signali in signali v realnem času, je POSIX zapustil to nedoločen, kar je bilo dostavljeno najprej. Linux, tako kot mnoge druge izvedbe, v tem primeru daje prednost standardnim signalom.

V skladu z POSIX bi morala izvedba omogočiti, da se v čakalno vrsto v čakalni vrsti v čakalni vrsti (_POSIX_SIGQUEUE_MAX (32)) v realnem času. Vendar pa Linux namesto omejitve na proces določi sistemsko omejitev števila signalov v realnem času v čakalnih vrstah za vse procese.

To omejitev si lahko ogledate (in s privilegijem) spremenite prek / proc / sys / kernel / rtsig-max mapa. Povezana datoteka, / proc / sys / kernel / rtsig-max , lahko uporabite, da ugotovite, koliko signalov v realnem času je trenutno v čakalni vrsti.

SODELOVANJE

POSIX.1

Pomembno: Uporabi človek ukaz ( % človek ), da vidite, kako se na vašem računalniku uporablja ukaz.