Signal - Linux / Unix ukaz

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.

Signal Vrednost Ukrep Komentar
ali smrt kontrolnega procesa
SIGINT 2 Izraz Prekinite s tipkovnice
SIGQUIT 3 Core Končaj s tipkovnice
SIGILL 4 Core Nezakonito navodilo
SIGABRT 6 Core Prekinite signal prekinitve (3)
SIGFPE 8 Core Izjema iz plavajoče točke
SIGKILL 9 Izraz Kill signal
SIGSEGV 11 Core Neveljavna referenca pomnilnika
SIGPIPE 13 Izraz Broken cevi: pišite na cev brez bralcev
SIGALRM 14 Izraz Signal timerja iz alarma (2)
SIGTERM 15 Izraz Končni signal
SIGUSR1 30,10,16 Izraz Uporabniško določen signal 1
SIGUSR2 31,12,17 Izraz Uporabniško določen signal 2
SIGCHLD 20,17,18 Ign Otrok se je ustavil ali končal
SIGCONT 19,18,25 Nadaljujte, če ste ga ustavili
SIGSTOP 17,19,23 Stop Ustavi postopek
SIGTSTP 18,20,24 Stop Nehajte vnašati v TTY
SIGTTIN 21,21,26 Stop tty vnos za ozadje
SIGTTOU 22,22,27 Stop tty izhod za ozadje

Signali SIGKILL in SIGSTOP 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.

Signal Vrednost Ukrep Komentar
SIGPOLL Izraz Zgodovinski dogodek (Sys V). Sinonim za SIGIO
SIGPROF 27,27,29 Izraz Časovnik profiliranja je potekel
SIGSYS 12, -, 12 Core Slab argument za rutinsko (SVID)
SIGTRAP 5 Core Trap / trap breakpoint
SIGURG 16,23,21 Ign Nujno stanje na vtičnici (4,2 BSD)
SIGVTALRM 26,26,28 Izraz Virtualna budilka (4,2 BSD)
SIGXCPU 24,24,30 Core Časovna omejitev CPU presega (4,2 BSD)
SIGXFSZ 25,25,31 Core Presežena omejitev velikosti datoteke (4,2 BSD)

Do in vključno z Linuxom 2.2, privzeto vedenje za SIGSYS , SIGXCPU , SIGXFSZ in (na arhitekturah, razen SPARC in MIPS) je SIGBUS končal proces (brez jedrne dump). (V nekaterih drugih Unicesu privzeto dejanje za SIGXCPU in SIGXFSZ preneha postopek brez jedrnega odlagališča.) Linux 2.4 ustreza zahtevam POSIX 1003.1-2001 za te signale in zaključi proces z odvodom jedra.

Naslednji različni drugi signali.

Signal Vrednost Ukrep Komentar
SIGEMT 7, -, 7 Izraz
SIGSTKFLT -, 16, - Izraz Napaka v stacku na koprocesorju (neuporabljena)
SIGIO 23,29,22 Izraz V / I je sedaj možno (4,2 BSD)
SIGCLD -, -, 18 Ign Sinonim za SIGCHLD
SIGPWR 29,30,19 Izraz Izpad električne energije (sistem V)
SIGINFO 29, -, - Sinonim za SIGPWR
SIGLOST -, -, - Izraz Zaklepanje datoteke je izgubljeno
SIGWINCH 28,28,20 Ign Signal za spreminjanje velikosti oken (4,3 BSD, Sun)
SIGUNUSED -, 31, - Izraz Neuporabljeni signal (bo SIGSYS)

(Signal 29 je SIGINFO / SIGPWR na alfa, toda SIGLOST na sparc .)

SIGEMT ni naveden v POSIX 1003.1-2001, vendar se brez dvoma prikaže v večini drugih Unices, kjer je privzeto dejanje običajno, da zaključi 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 zapisa SIGRTMIN + 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 s pomočjo sigqueue (2), se s signalom lahko pošlje spremljajoča vrednost (bodisi celo število ali kazalec). Če postopek sprejemanja vzpostavi vodilo za ta signal z uporabo oznake SA_SIGACTION do sigaction (2), potem lahko te podatke pridobi s poljem si_value strukture siginfo_t, ki je posredovana kot drugi argument vodniku. Poleg tega se lahko polja si_pid in si_uid te strukture uporabijo za pridobitev PID in dejanskega uporabnika ID procesa, ki pošilja signal.
  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. (Tj. 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 je mogoče gledati (in s privilegijem), spremenjeno prek datoteke / proc / sys / kernel / rtsig-max . Povezana datoteka, / proc / sys / kernel / rtsig-max , se lahko uporabi za ugotovitev, koliko trenutnih signalov je trenutno v čakalni vrsti.

SODELOVANJE

POSIX.1

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