Signaal - Linux / Unix Command

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:

  1. 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.
  2. 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.
  3. 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.