Linux tukee sekä POSIX-luotettavia signaaleja (jäljempänä "standardisignaaleja") että POSIX-reaaliaikaisia signaaleja.
Vakiosignaalit
Linux tukee alla lueteltuja vakiosignaaleja. Useat signaalinumerot ovat arkkitehtuuria riippuvaisia, kuten "Arvo" -sarakkeessa on osoitettu. (Jos kolme arvoa annetaan, ensimmäinen on yleensä voimassa alfa ja sparc, keskimmäinen i386, ppc ja sh, ja viimeinen mipsille.
A - tarkoittaa, että vastaava arkkitehtuuri puuttuu signaalista.)
Taulukon Toiminto-sarakkeessa olevat merkinnät määrittävät signaalin oletustoiminnon seuraavasti:
Termi
Oletuksena on lopettaa prosessi.
Ign
Oletuksena on ohittaa signaali.
Ydin
Oletusasetus on lopettaa prosessin ja salauksen ydin.
Stop
Oletuksena on lopettaa prosessi.
Ensin signaalit, jotka on kuvattu alkuperäisessä POSIX.1-standardissa.
signaali | Arvo | Toiminta | Kommentti |
tai kontrollointiprosessin kuolemaa | |||
SIGINT | 2 | Termi | Keskeytys näppäimistöstä |
SIGQUIT | 3 | Ydin | Lopeta näppäimistöstä |
SIGILL | 4 | Ydin | Laittomia ohjeita |
SIGABRT | 6 | Ydin | Keskeytä signaali keskeytyksestä (3) |
SIGFPE | 8 | Ydin | Floating point poikkeus |
SIGKILL | 9 | Termi | Tapa signaali |
SIGSEGV | 11 | Ydin | Virheellinen muistin viite |
SIGPIPE | 13 | Termi | Rikki putki: kirjoita putkiin ilman lukijoita |
SIGALRM | 14 | Termi | Ajastussignaali hälytyksestä (2) |
SIGTERM | 15 | Termi | Päätyssignaali |
SIGUSR1 | 30,10,16 | Termi | Käyttäjän määrittelemä signaali 1 |
SIGUSR2 | 31,12,17 | Termi | Käyttäjän määrittelemä signaali 2 |
SIGCHLD | 20,17,18 | Ign | Lapsi pysähtyi tai lopetti |
SIGCONT | 19,18,25 | Jatka, jos se pysähtyy | |
SIGSTOP | 17,19,23 | Stop | Pysäytä prosessi |
SIGTSTP | 18,20,24 | Stop | Lopeta kirjoitettu tty: ssä |
SIGTTIN | 21,21,26 | Stop | tty syöttö taustaprosessille |
SIGTTOU | 22,22,27 | Stop | tty tuotos taustaprosessille |
SIGKILLin ja SIGSTOPin signaaleja ei voida pitää kiinni, estää tai jättää huomiotta.
Seuraavaksi signaalit eivät ole POSIX.1-standardissa mutta kuvattu SUSv2 ja SUSv3 / POSIX 1003.1-2001.
signaali | Arvo | Toiminta | Kommentti |
SIGPOLL | Termi | Pollable tapahtuma (Sys V). SIGIOn synonyymi | |
SIGPROF | 27,27,29 | Termi | Profiililaskuri on vanhentunut |
SIGSYS | 12, -, 12 | Ydin | Huono argumentti rutiinille (SVID) |
SIGTRAP | 5 | Ydin | Trace / breakpoint-ansa |
SIGURG | 16,23,21 | Ign | Kiireellinen tila pistorasiassa (4.2 BSD) |
SIGVTALRM | 26,26,28 | Termi | Virtuaalinen herätyskello (4.2 BSD) |
SIGXCPU | 24,24,30 | Ydin | CPU-aikaraja ylittyi (4.2 BSD) |
SIGXFSZ | 25,25,31 | Ydin | Tiedostokoon raja ylitetty (4.2 BSD) |
SIGSYSin , SIGXCPU: n , SIGXFSZ : n ja (muiden arkkitehtuurien kuin SPARC: n ja MIPS: n) SIGBUS: n oletus käyttäytyminen, mukaan lukien Linux 2.2, oli lopettaa prosessi (ilman ydinkansiota ). (Joillakin muilla Unicesillä SIGXCPU: n ja SIGXFSZ: n oletustoiminto on lopettaa prosessi ilman ydinliputä .) Linux 2.4 noudattaa POSIX 1003.1-2001 -vaatimuksia näille signaaleille, lopettaen prosessin ytimen kaatopaikalle.
Seuraavat muut erilaiset signaalit.
signaali | Arvo | Toiminta | Kommentti |
SIGEMT | 7, -, 7 | Termi | |
SIGSTKFLT | -, 16, - | Termi | Stack-vika koprocessorissa (käyttämättömänä) |
SIGIO | 23,29,22 | Termi | I / O nyt mahdollinen (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | Synonyymi SIGCHLD: lle |
SIGPWR | 29,30,19 | Termi | Sähkökatkos (järjestelmä V) |
SIGINFO | 29, -, - | Synonyymi SIGPWR: lle | |
SIGLOST | -, -, - | Termi | Tiedoston lukitus menetetty |
SIGWINCH | 28,28,20 | Ign | Ikkunan kokoaaltosignaali (4.3 BSD, Aurinko) |
SIGUNUSED | -, 31, - | Termi | Käyttämätön signaali (tulee olemaan SIGSYS) |
(Signaali 29 on SIGINFO / SIGPWR alfalla, mutta SIGLOST on sparcilla .)
SIGEMT: tä ei ole määritelty POSIX 1003.1-2001: ssä, mutta se näkyy useimmissa muissa Unice-järjestelmissä, sillä sen oletustoiminto on tyypillisesti päätettävä prosessi ydinpalautuksella.
SIGPWR (joka ei ole määritelty POSIX 1003.1-2001: ssa) jätetään yleensä oletusarvoisesti muille Unices-sivuille, joissa se näkyy.
SIGIO (jota ei ole määritelty POSIX 1003.1-2001: ssa) ohitetaan oletusarvoisesti useilla muilla Unices-laitteilla.
Reaaliaikaiset signaalit
Linux tukee reaaliaikaisia signaaleja, kuten alun perin määritettiin POSIX.4-reaaliaikaisissa laajennuksissa (ja nyt POSIX 1003.1-2001). Linux tukee 32 reaaliaikaista signaalia, joiden numero on 32 ( SIGRTMIN ) ja 63 ( SIGRTMAX ). (Ohjelmien tulisi aina viitata reaaliaikaisiin signaaleihin merkinnällä SIGRTMIN + n, koska reaaliaikaisten signaalilukujen alue vaihtelee Unicesin välillä.)
Toisin kuin standardisignaaleilla, reaaliaikaisilla signaaleilla ei ole ennalta määriteltyjä merkkejä: koko reaaliaikaisen signaalin sarjaa voidaan käyttää sovelluksen määrittämissä tarkoituksissa. (Huomaa kuitenkin, että LinuxThreads-toteutus käyttää ensimmäisiä kolmea reaaliaikaista signaalia.)
Käsittelemättömän reaaliaikaisen signaalin oletustoiminto on päättää vastaanottoprosessi.
Reaaliaikaiset signaalit erotetaan seuraavista:
- Useita reaaliaikaisia signaaleja voi olla jonoon. Sitä vastoin, jos usean standardisignaalin esiintymiä toimitetaan, kun signaali on tällä hetkellä tukossa, vain yksi tapaus on jonoon.
- Jos signaali lähetetään sigqueue (2) avulla, signaalin avulla voidaan lähettää mukanaoleva arvo (joko kokonaisluku tai osoitin). Jos vastaanottoprosessi muodostaa tämän signaalin käsittelijän käyttämällä SA_SIGACTION- lippua sigaction (2), se voi saada tämän datan sig_info_t- rakenteen si_value- kentän kautta, joka on siirretty toiseksi argumentiksi käsittelijälle. Lisäksi tämän rakenteen si_pid ja si_uid kenttiä voidaan käyttää signaalin lähettämisen prosessin PID ja todellisen käyttäjätunnuksen saamiseksi.
- Reaaliaikaiset signaalit toimitetaan taatussa järjestyksessä. Saman tyyppisiä reaaliaikaisia signaaleja toimitetaan lähetysjärjestyksessä. Jos prosessille lähetetään erilaisia reaaliaikaisia signaaleja, ne toimitetaan lähtien pienimmillään olevasta signaalista. (Eli, pienillä numeroilla on ensisijainen merkitys.)
Jos sekä vakiotilaus- että reaaliaikaiset signaalit odottavat prosessia, POSIX jättää määrittelemättömän, joka toimitetaan ensin. Linux, kuten monet muut toteutukset, antaa etusijalle vakiosignaalit tässä tapauksessa.
POSIXin mukaan toteutuksen tulisi mahdollistaa ainakin _POSIX_SIGQUEUE_MAX (32) reaaliaikaiset signaalit jonossa prosessiin. Kuitenkin prosessin rajojen asettamisen sijaan Linux asettaa järjestelmäkohtaisen rajan kaikille reaaliaikaisille signaaleille kaikille prosesseille.
Tätä rajaa voidaan tarkastella (ja etuoikeudella) / proc / sys / kernel / rtsig-max -tiedoston kautta. Aiheeseen liittyvä tiedosto, / proc / sys / kernel / rtsig-max , voidaan selvittää, kuinka monta reaaliaikaista signaalia on jonossa.
TÄYDENTÄVÄ
POSIX.1
Tärkeää: Käytä man- komentoa ( % man ) nähdäksesi kuinka komentoa käytetään tietyssä tietokoneessa.