Linux toetab nii POSIXi usaldusväärseid signaale (edaspidi "standardseid signaale") kui ka POSIXi reaalajas signaale.
Standardsignaalid
Linux toetab allpool loetletud standardseid signaale. Mitmed signaalinumbrid on arhitektuurist sõltuvad, nagu on näidatud veerus "Väärtus". (Kui on antud kolm väärtust, siis esimene kehtib tavaliselt alfa ja sparc kohta, keskmine i386, ppc ja sh ning viimane mipside jaoks.
A - tähendab, et vastavas arhitektuuris puudub signaal.)
Tabeli veerus "Toimingud" olevad kanded määravad signaali vaikeväärtused järgmiselt:
Tähtaeg
Vaiketegevus on protsessi lõpetamine.
Ign
Vaikimisi on signaal ignoreerida.
Tuum
Vaikimisi toiming on lõpetada protsess ja dump tuum.
Peatus
Vaiketegevus on protsessi peatamine.
Esiteks originaal POSIX.1 standardis kirjeldatud signaalid.
Signaal | Väärtus | Tegevus | Kommentaar |
või kontrollimise protsessi surm | |||
SIGINT | 2 | Tähtaeg | Katkesta klaviatuurist |
SIGQUIT | 3 | Tuum | Välju klaviatuurist |
SIGILL | 4 | Tuum | Ebaseaduslik juhendamine |
SIGABRT | 6 | Tuum | Katkestage signaal katkestusest (3) |
SIGFPE | 8 | Tuum | Ujukoma erand |
SIGKILL | 9 | Tähtaeg | Kill signaali |
SIGSEGV | 11 | Tuum | Kehtetu mälu viide |
SIGPIPE | 13 | Tähtaeg | Purunenud toru: kirjuta torule ilma lugejateta |
SIGALRM | 14 | Tähtaeg | Alarmi taimeri signaal (2) |
SIGTERM | 15 | Tähtaeg | Lõpp-signaal |
SIGUSR1 | 30,10,16 | Tähtaeg | Kasutaja poolt määratud signaal 1 |
SIGUSR2 | 31,12,17 | Tähtaeg | Kasutaja määratud signaal 2 |
SIGCHLD | 20,17,18 | Ign | Laps peatus või lõpetas |
SIGCONT | 19,18,25 | Jätkake, kui see on peatatud | |
SIGSTOP | 17,19,23 | Peatus | Peatage protsess |
SIGTSTP | 18,20,24 | Peatus | Lõpeta kirjutama tty-s |
SIGTTIN | 21,21,26 | Peatus | tty sisend taustprotsessi jaoks |
SIGTTOU | 22,22,27 | Peatus | TTÜ väljund taustprotsessi jaoks |
Signaale SIGKILL ja SIGSTOP ei saa kinni püüda, blokeerida ega ignoreerida.
Järgmised signaalid ei ole POSIX.1 standardis, vaid need on kirjeldatud SUSv2 ja SUSv3 / POSIX 1003.1-2001.
Signaal | Väärtus | Tegevus | Kommentaar |
SIGPOLL | Tähtaeg | Saastatud sündmus (Sys V). SIGIO sünonüüm | |
SIGPROF | 27,27,29 | Tähtaeg | Profiili taimer aegunud |
SIGSYS | 12, -, 12 | Tuum | Halb argument rutiinile (SVID) |
SIGTRAP | 5 | Tuum | Trace / murdepunkti lõks |
SIGURG | 16,23,21 | Ign | Pistikupesast tingitud kiire seisund (4.2 BSD) |
SIGVTALRM | 26,26,28 | Tähtaeg | Virtuaalne äratuskell (4.2 BSD) |
SIGXCPU | 24,24,30 | Tuum | CPU ajapiirang ületatud (4.2 BSD) |
SIGXFSZ | 25,25,31 | Tuum | Faili suuruse piirang ületatud (4.2 BSD) |
Kuni Linux 2.2 hulka kuulub SIGSYSi , SIGXCPU , SIGXFSZi ja (muude kui SPARC ja MIPS-i arhitektuuride) vaikimisi käitumine. SIGBUS oli protsessi lõpetada (ilma tuumavarumata ). (Mõnes teises Unices'is on SIGXCPU ja SIGXFSZi vaikimisi toiming katkestamata ilma südamiku tühjendamiseta.) Linux 2.4 vastab nende signaalide POSIX 1003.1-2001 nõuetele, lõpetades protsessi tuumade prügimäega.
Järgmised mitmesugused muud signaalid.
Signaal | Väärtus | Tegevus | Kommentaar |
SIGEMT | 7, -, 7 | Tähtaeg | |
SIGSTKFLT | -, 16, - | Tähtaeg | Koproprotsessori vea rike (kasutamata) |
SIGIO | 23, 29, 22 | Tähtaeg | I / O on nüüd võimalik (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | SIGCHLDi sünonüüm |
SIGPWR | 29,30,19 | Tähtaeg | Toite rike (süsteem V) |
SIGINFO | 29, -, - | SIGPWRi sünonüüm | |
SIGLOST | -, -, - | Tähtaeg | Faili lukk on kadunud |
SIGWINCH | 28,28,20 | Ign | Akna suuruse muutmise signaal (4.3 BSD, päike) |
SIGUNUSED | -, 31, - | Tähtaeg | Kasutamata signaal (saab olema SIGSYS) |
(Signaal 29 on SIGINFO / SIGPWR alfal, kuid SIGLOST on sparc.)
SIGEMT pole POSIX 1003.1-2001-s määratletud, kuid enamikku teisi ühikuid kuvatakse ikkagi, kusjuures selle vaikimisi toiming on tavaliselt lõpetada protsessi tuumavaldusega.
SIGPWR (mida POSIX 1003.1-2001 pole määratud) ignoreeritakse tavaliselt nende muude Unices'ide puhul, kus see ilmub.
SIGIO (mida ei ole määratletud POSIX 1003.1-2001-s) ignoreeritakse vaikimisi mitmes teises Unices'is.
Reaalajas signaalid
Linux toetab reaalajas toimivaid signaale, nagu on algselt määratletud POSIX.4 reaalajas laiendustes (ja nüüd lisatakse POSIX 1003.1-2001). Linux toetab 32 reaalajas signaali, nummerdatud 32 ( SIGRTMIN ) kuni 63 ( SIGRTMAX ). (Programmid peaksid alati tähistama reaalajas signaale, kasutades märgistust SIGRTMIN + n, kuna reaalajas toimuvate signaalide numbrite hulk erineb Unixide lõikes.)
Erinevalt tavalistest signaalidest ei ole reaalajas signaalidel eelnevalt määratletud tähendusi: kogu reaalaja signaalide komplekti saab kasutada rakenduste jaoks määratletud eesmärkidel. (Pange tähele, et LinuxThreads rakendus kasutab esimest kolme reaalajas signaali.)
Häireteta reaalajas signaali vaikimisi toiming on vastuvõtuprotsessi lõpetamine.
Reaalajas signaale eristatakse järgmiselt:
- Reaalaja signaalide mitu näidet saab järjestada. Seevastu juhul, kui see signaal on hetkel blokeeritud, edastatakse tavalise signaali mitu näidist, siis on järjekorras ainult üks eksemplar.
- Kui signaal saadetakse sigqueue'iga (2), võib signaaliga saata saatva väärtuse (kas täisarvuna või kursoriga). Kui vastuvõttev protsess loob selle signaali jaoks käitleja, kasutades SA_SIGACTIONi märgistust sigaction'ile (2), siis saab ta need andmed siigaväärtuse väljale, mis pärineb käsundi teise argumendina siginfo_t struktuurist. Lisaks sellele saab selle struktuuri si_pid ja si_uid välju saata signaali saatva protsessi PID-i ja tegeliku kasutajatunnuse saamiseks.
- Reaalajas saadetavad signaalid toimetatakse garanteeritud järjekorras. Sama tüüpi reaalaja mitu reaalajas saadetavat signaale edastatakse tellimusena. Kui protsessile saadetakse erinevad reaalajas signaalid, tarnitakse need kõige madalama numbriga signaaliga. (St madala numbriga signaalid on kõige tähtsamad.)
Kui protsessi jaoks on oodata nii standardseid kui ka reaalajas signaale, jätab POSIX selle määramata, mis esimest korda toimetatakse. Linux, nagu paljud teised rakendused, eelistab käesoleval juhul standardseid signaale.
POSIXi sõnul peaks rakendamine võimaldama vähemalt vähemalt _POSIX_SIGQUEUE_MAX (32) reaalajas signaale, mis tuleb protsessi järjekorda viia. Selle asemel, et iga protsessi piirangut seada, kehtestab Linux kõigi protsesside järjestikuste reaalajas signaalide arvu kogu süsteemisisese piirangu.
Seda piiri saab vaadata (ja privileegiga) muuta / proc / sys / kernel / rtsig-max faili kaudu. Seotud faili, / proc / sys / kernel / rtsig-max , saab teada saada, mitu reaalajas olevat signaali on praegu järjekorras.
VASTAVALT
POSIX.1
Tähtis: kasutage käsuga man ( % man ), et näha, kuidas käsku kasutatakse teie konkreetsel arvutis.