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ą 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 | Signalo laikmatis (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 |
Signalai SIGKILL ir SIGSTOP negali būti 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 numatytąsias " SIGSYS" , " SIGXCPU" , " SIGXFSZ" ir (kitų architektūrų, išskyrus SPARC ir MIPS) veikimą, "SIGBUS" turėjo nutraukti procesą (be šerdies). (Kai kuriuose kitose "Unices" numatytasis veiksmas SIGXCPU ir SIGXFSZ yra nutraukti procesą be pagrindinio duomenų išvedimo.) Linux 2.4 atitinka šiuos signalus taikomų POSIX 1003.1-2001 reikalavimų, nutraukiant procesą su pagrindine išlaida.
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) |
(Signalas 29 yra SIGINFO / SIGPWR alfa, bet SIGLOST sparc.)
SIGEMT nenurodytas POSIX 1003.1-2001, bet beveik visose Unices atrodo beviltiška, o jo numatytasis veiksmas paprastai nutraukia procesą su pagrindine išlaida.
SIGPWR (kuris nenurodytas POSIX 1003.1-2001) paprastai yra ignoruojamas tuos kitus Unices, kur jis pasirodo.
SIGIO (kuris nenurodytas POSIX 1003.1-2001) pagal numatytuosius nustatymus yra ignoruojamas keliose kitose "Unices".
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 nuo 32 ( SIGRTMIN ) iki 63 ( SIGRTMAX ). (Programos visada turėtų būti susijusios su realaus laiko signalais, naudojant žymėjimą SIGRTMIN + n, nes realaus laiko signalų skaičių diapazonas skiriasi visose Uniceose.)
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 naudojant sigqueue (2), kartu su signalu gali būti siunčiama papildoma vertė (arba sveikasis skaičius ar rodyklė). Jei priėmimo procesas nustato šio signalo tvarkytoją, naudojant SA_SIGACTION vėliavą į sigaction (2), jis gali gauti šiuos duomenis per siginfo_t struktūros si_valuomenų lauką, kuris perduodamas kaip antrasis argumentas tvarkytojui. Be to, šios struktūros si_pid ir si_uid 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. (Ty, žemos kokybės 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 failą / proc / sys / kernel / rtsig-max . Susijęs failas, / proc / sys / kernel / rtsig-max , gali būti naudojamas norint išsiaiškinti, kiek realiojo laiko signalų šiuo metu yra eilėje.
Atitikti
POSIX.1
Svarbu: naudokite komandą man ( % man ), kad pamatytumėte, kaip komanda naudojama jūsų konkrečiame kompiuteryje.