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:
- 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.
- Č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.
- 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.