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.
Signalas | Vertė | Veiksmas | Komentaras |
ar kontrolės proceso mirtis | |||
SIGINT | 2 | Terminas | Pertrauka iš klaviatūros |
SIGQUIT | 3 | Branduolys | Baigti klaviatūrą |
SIGILL | 4 | Branduolys | Neteisėta instrukcija |
SIGABRT | 6 | Branduolys | Nutraukti signalą iš nutraukti (3) |
SIGFPE | 8 | Branduolys | Išimtis iš plūduriuojančio taško |
SIGKILL | 9 | Terminas | Nužudyti signalą |
SIGSEGV | 11 | Branduolys | Netinkama atminties nuoroda |
SIGPIPE | 13 | Terminas | Skaldytas vamzdis: rašykite vamzdžiui be skaitytuvo |
SIGALRM | 14 | Terminas | Laikmačio signalas iš signalizacija (2) |
SIGTERM | 15 | Terminas | Nutraukimo signalas |
SIGUSR1 | 30,10,16 | Terminas | Vartotojo nustatytas signalas 1 |
SIGUSR2 | 31,12,17 | Terminas | Vartotojo nustatytas signalas 2 |
SIGCHLD | 20,17,18 | Ignas | Vaikas sustojo ar nutraukė |
SIGCONT | 19,18,25 | Tęsti, jei sustojo | |
SIGSTOP | 17,19,23 | Sustabdyti | Sustoti procesas |
SIGTSTP | 18,20,24 | Sustabdyti | Sustabdykite įvedę į tty |
SIGTTIN | 21,21,26 | Sustabdyti | tty įvestis fono procesui |
SIGTTOU | 22,22,27 | Sustabdyti | tty 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.
Signalas | Vertė | Veiksmas | Komentaras |
SIGPOLL | Terminas | Užsikrečiama įvykis (Sys V). SIGIO sinonimas | |
SIGPROF | 27,27,29 | Terminas | Profilio laikmatis pasibaigė |
SIGSYS | 12,-,12 | Branduolys | Blogas argumentas įprastam (SVID) |
SIGTRAP | 5 | Branduolys | Trace / stoppoint spąstai |
SIGURG | 16,23,21 | Ignas | Skubos būklė prie lizdo (4.2 BSD) |
SIGVTALRM | 26,26,28 | Terminas | Virtuali žadintuvas (4.2 BSD) |
SIGXCPU | 24,24,30 | Branduolys | Procesoriaus laikas viršytas (4.2 BSD) |
SIGXFSZ | 25,25,31 | Branduolys | Virš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.
Signalas | Vertė | Veiksmas | Komentaras |
SIGEMT | 7,-,7 | Terminas | |
SIGSTKFLT | -,16,- | Terminas | Kopprocesoriaus kamino gedimas (nepanaudotas) |
SIGIO | 23,29,22 | Terminas | I / O dabar galimas (4.2 BSD) |
SIGCLD | -,-,18 | Ignas | SIGCHLD sinonimas |
SIGPWR | 29,30,19 | Terminas | Maitinimo gedimas (V sistema) |
SIGINFO | 29,-,- | SIGPWR sinonimas | |
SIGLOST | -,-,- | Terminas | Failo užraktas prarastas |
SIGWINCH | 28,28,20 | Ignas | Lango dydžio signalo keitimas (4.3 BSD, Sun) |
SIGUNUSED | -,31,- | Terminas | Nepanaudotas 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:
- 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.
- 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.
- 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.