Skip to main content

Signalas - Linux / Unix komanda

Anonim

Linux palaiko tiek POSIX patikimus signalus (toliau - standartiniai signalai), tiek POSIX realaus laiko signalus.

Standartiniai signalai

Linux palaiko toliau nurodytus standartinius signalus. Keli signalų skaičiai priklauso nuo architektūros, kaip nurodyta stulpelyje "Vertė". (Kai pateikiamos trys vertės, pirmasis paprastai galioja alfa ir sparc, vidutinis i386, ppc ir sh, o paskutinis - mips.

A - reiškia, kad atitinkamoje architektūroje nėra signalo.)

Lentelės stulpelyje "Veiksmas" įrašai nurodo numatytą signalo veiksmą, kaip nurodyta toliau:

Terminas

Numatytasis veiksmas yra nutraukti procesą.

Ignas

Numatytasis veiksmas yra ignoruoti signalą.

Branduolys

Numatytasis veiksmas - nutraukti procesą ir išmesti šerdį.

Sustabdyti

Numatytasis veiksmas - sustabdyti procesą.

Pirmasis signalas aprašytas pradiniame POSIX.1 standarto.

SignalasVertėVeiksmasKomentaras
ar kontrolės proceso mirtis
SIGINT2TerminasPertrauka iš klaviatūros
SIGQUIT3BranduolysBaigti klaviatūrą
SIGILL4BranduolysNeteisėta instrukcija
SIGABRT6BranduolysNutraukti signalą iš nutraukti (3)
SIGFPE8BranduolysIšimtis iš plūduriuojančio taško
SIGKILL9TerminasNužudyti signalą
SIGSEGV11BranduolysNetinkama atminties nuoroda
SIGPIPE13TerminasSkaldytas vamzdis: rašykite vamzdžiui be skaitytuvo
SIGALRM14TerminasLaikmačio signalas iš signalizacija (2)
SIGTERM15TerminasNutraukimo signalas
SIGUSR130,10,16TerminasVartotojo nustatytas signalas 1
SIGUSR231,12,17TerminasVartotojo nustatytas signalas 2
SIGCHLD20,17,18IgnasVaikas sustojo ar nutraukė
SIGCONT19,18,25 Tęsti, jei sustojo
SIGSTOP17,19,23SustabdytiSustoti procesas
SIGTSTP18,20,24SustabdytiSustabdykite įvedę į tty
SIGTTIN21,21,26Sustabdytitty įvestis fono procesui
SIGTTOU22,22,27Sustabdytitty išėjimas fono procesui

SignalaiSIGKILL irSIGSTOP negalima sugauti, užblokuoti arba ignoruoti.

Kitas signalai nėra POSIX.1 standarte, bet aprašyti SUSv2 ir SUSv3 / POSIX 1003.1-2001.

SignalasVertėVeiksmasKomentaras
SIGPOLL TerminasUžsikrečiama įvykis (Sys V). SIGIO sinonimas
SIGPROF27,27,29TerminasProfilio laikmatis pasibaigė
SIGSYS12,-,12BranduolysBlogas argumentas įprastam (SVID)
SIGTRAP5BranduolysTrace / stoppoint spąstai
SIGURG16,23,21IgnasSkubos būklė prie lizdo (4.2 BSD)
SIGVTALRM26,26,28TerminasVirtuali žadintuvas (4.2 BSD)
SIGXCPU24,24,30BranduolysProcesoriaus laikas viršytas (4.2 BSD)
SIGXFSZ25,25,31BranduolysViršytas failo dydis (4.2 BSD)

Iki "Linux 2.2", įskaitant numatytuosius elgesiusSIGSYS, SIGXCPU, SIGXFSZ, ir (dėl kitų architektūrų, išskyrus SPARC ir MIPS)SIGBUS buvo nutraukti procesą (be pagrindinio sąvartyno). (Kai kuriuose kitose "Unices" numatytasis veiksmasSIGXCPU irSIGXFSZ yra nutraukti procesą be šerdies.) Linux 2.4 atitinka šiuos signalus taikomų POSIX 1003.1-2001 reikalavimų, nutraukiant procesą šerdimi.

Kitas įvairūs kiti signalai.

SignalasVertėVeiksmasKomentaras
SIGEMT7,-,7Terminas
SIGSTKFLT-,16,-TerminasKopprocesoriaus kamino gedimas (nepanaudotas)
SIGIO23,29,22TerminasI / O dabar galimas (4.2 BSD)
SIGCLD-,-,18IgnasSIGCHLD sinonimas
SIGPWR29,30,19TerminasMaitinimo gedimas (V sistema)
SIGINFO29,-,- SIGPWR sinonimas
SIGLOST-,-,-TerminasFailo užraktas prarastas
SIGWINCH28,28,20IgnasLango dydžio signalo keitimas (4.3 BSD, Sun)
SIGUNUSED-,31,-TerminasNepanaudotas signalas (bus SIGSYS)

(29 signalas yraSIGINFO / SIGPWR alfa, betSIGLOST sparc.)

SIGEMT nėra nurodytas POSIX 1003.1-2001, tačiau daugelyje kitų "Unices" atsiranda beviltiška, kur jo numatytasis veiksmas paprastai nutraukia procesą su šerdimi.

SIGPWR (kuris nenurodytas POSIX 1003.1-2001) paprastai yra ignoruojamas tuos kitus Unices, kur jis pasirodo.

SIGIO (kuris nenurodytas POSIX 1003.1-2001) pagal kelis kitus Unices yra ignoruojamas.

Realaus laiko signalai

"Linux" palaiko realaus laiko signalus, kaip iš pradžių apibrėžta realiuoju laiku pratęsimų POSIX.4 (ir dabar įtraukta į POSIX 1003.1-2001). "Linux" palaiko 32 realaus laiko signalus, sunumeruotus iš 32 (SIGRTMIN) iki 63 (SIGRTMAX) (Programos visada turėtų būti nuorodos į realaus laiko signalus, naudojant žymėjimąSIGRTMIN+ n, nes realaus laiko signalų skaičių diapazonas skiriasi visose "Unices".)

Skirtingai nuo standartinių signalų, realaus laiko signalai neturi iš anksto apibrėžtų reikšmių: visą realaus laiko signalų rinkinį galima naudoti apibrėžtiems tikslams. (Tačiau atkreipkite dėmesį, kad įgyvendinant "LinuxThreads" naudojami pirmieji trys realaus laiko signalai.)

Numatytasis veiksmas dėl nevaldyto realaus laiko signalo yra nutraukti priėmimo procesą.

Realaus laiko signalai skiriasi šiais būdais:

  1. Kelių realaus laiko signalų pavyzdžiai gali būti rodomi. Priešingai, jei tuo metu, kai šis signalas šiuo metu yra užblokuotas, pateikiami keli standartinio signalo atvejai, tada tik vienas egzempliorius yra eilėje.
  2. Jei signalas siunčiamas naudojantsigqueue(2), kartu su signalu gali būti siunčiama pridėtinė vertė (arba sveikas skaičius ar rodyklė). Jei priėmimo procesas nustato šio signalo tvarkytoją naudojantSA_SIGACTION vėliava įsigacija(2), tada jis gali gauti šiuos duomenis per si_value laukas siginfo_t struktūra kaip antrasis argumentas tvarkytojui. Be to, si_pid ir si_uid Šios struktūros laukai gali būti naudojami norint gauti signalo siuntimo proceso PID ir realų naudotojo ID.
  3. Realaus laiko signalai pristatomi garantuota tvarka. Keli vienodo tipo realaus laiko signalai pristatomi taip, kaip jie buvo išsiųsti. Jei procesui siunčiami skirtingi realaus laiko signalai, jie pristatomi pradedant nuo mažiausio skaičiaus signalo. (I.e., žemo dažnio signalai yra aukščiausio prioriteto.)

Jei procesas laukia tiek standartinių, tiek realaus laiko signalų, POSIX palieka tai nenustatyta, kuri pirmiausia pristatoma. Linux, kaip ir daugelis kitų diegimų, šiuo atveju pirmenybę teikia standartiniams signalams.

Pasak "POSIX", įgyvendinant turėtų būti leidžiama bent jau _POSIX_SIGQUEUE_MAX (32) realaus laiko signalus būti eiliški procesui. Tačiau, užuot nustatę kiekvieno proceso apribojimą, "Linux" nustato viso proceso ribų eilėje esančių realaus laiko signalų skaičių visuose procesuose.

Ši riba gali būti peržiūrima (ir su privilegija) pakeista per / proc / sys / kernel / rtsig-max failas Susijusi byla / proc / sys / kernel / rtsig-max , galima sužinoti, kiek realiojo laiko signalų šiuo metu yra eilėje.

Atitikti

POSIX.1

Svarbu: Naudoti vyras komanda ( % vyras ), kad pamatytumėte, kaip komanda naudojama jūsų konkrečiame kompiuteryje.