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 keskeyttää (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älytys (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 |
SignaalitSIGKILL jaSIGSTOP ei voida 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) |
Jopa Linux 2.2, oletusarvoinen käyttäytyminenSIGSYS, SIGXCPU, SIGXFSZ, ja (muissa arkkitehtuureissa kuin SPARC ja MIPS)SIGBUS oli lopettaa prosessi (ilman ydinkeräystä). (Joillakin muilla Unicesillä oletustoimintoSIGXCPU jaSIGXFSZ on lopettaa prosessi ilman ydinkeräystä.) Linux 2.4 noudattaa POSIX 1003.1-2001 -standardeja 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 onSIGINFO / SIGPWR alfa muttaSIGLOST sparcilla.)
SIGEMT ei ole määritelty POSIX 1003.1-2001: ssä, mutta silti näkyy useimmissa muissa Unices-sovelluksissa, joissa sen oletustoiminto tyypillisesti lopettaa prosessin ytimen kaatopaikalle.
SIGPWR (jota ei ole määritetty POSIX 1003.1-2001: ssä) on yleensä jätetty oletusarvoisesti niille muille Unices-alueille, joissa se näkyy.
SIGIO (jota ei ole määritelty POSIX 1003.1-2001: ssa) on oletusarvoisesti jätetty huomiotta 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, numeroiden 32 (SIGRTMIN) 63 (SIGRTMAX). (Ohjelmien tulisi aina viitata reaaliaikaisiin signaaleihin merkinnälläSIGRTMIN+ n, koska reaaliaikaisen signaalinumerot vaihtelevat Unicesin kautta.)
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 käyttäensigqueue(2), signaalin mukana voidaan lähettää liitäntäarvo (joko kokonaisluku tai osoitin). Jos vastaanottoprosessi muodostaa tämän signaalin käsittelijän käyttäenSA_SIGACTION lippusigaction(2) sitten se voi saada nämä tiedot si_value alalla siginfo_t rakenne siirretään toiseksi argumentiksi käsittelijälle. Lisäksi si_pid ja si_uid Tämän rakenteen 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. (Esim. Alhaisilla 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 voi tarkastella (ja etuoikeudella) muuttamalla / Proc / sys / kernel / rtsig-max tiedosto. 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ä mies komento ( % mies ), miten komentoa käytetään tietyssä tietokoneessa.