Linux mbështet të dy sinjalet POSIX të besueshme (më tej "sinjalet standarde") dhe POSIX sinjale në kohë reale.
Sinjalet standarde
Linux mbështet sinjalet standarde të listuara më poshtë. Disa shenja sinjalesh varen nga arkitektura, siç tregohet në kolonën "Vlera". (Ku jepen tre vlera, i pari është zakonisht i vlefshëm për alfa dhe sparc, i mesëm për i386, ppc dhe sh, dhe i fundit për mips.
A - tregon se një sinjal mungon në arkitekturën korresponduese.)
Shënimet në kolonën "Veprimi" të tabelës përcaktojnë veprimin e parazgjedhur të sinjalit, si më poshtë:
afat
Veprimi i parazgjedhur është të përfundojë procesin.
IGN
Veprimi i parazgjedhur është të shpërfill sinjalin.
Bërthamë
Veprimi i parazgjedhur është mbyllja e procesit dhe deponimi i bërthamës.
stop
Veprimi i parazgjedhur është ndalimi i procesit.
Së pari sinjalet e përshkruara në standardin origjinal POSIX.1.
sinjal | vlerë | veprim | koment |
ose vdekjen e procesit të kontrollit | |||
SIGINT | 2 | afat | Ndërprite nga tastiera |
SIGQUIT | 3 | Bërthamë | Lëvizni nga tastiera |
SIGILL | 4 | Bërthamë | Udhëzim i paligjshëm |
SIGABRT | 6 | Bërthamë | Abortoni sinjal nga ndërprerja (3) |
SIGFPE | 8 | Bërthamë | Përjashtim nga pikat lundruese |
SIGKILL | 9 | afat | Vrasni sinjalin |
SIGSEGV | 11 | Bërthamë | Referenca e pavlefshme e kujtesës |
SIGPIPE | 13 | afat | Tub i thyer: shkruaj në tub pa lexues |
SIGALRM | 14 | afat | Sinjali i kohëmatësit nga alarmi (2) |
SIGTERM | 15 | afat | Sinjali i përfundimit |
SIGUSR1 | 30,10,16 | afat | Sinjali i përcaktuar nga përdoruesi 1 |
SIGUSR2 | 31,12,17 | afat | Sinjali i përcaktuar nga përdoruesi 2 |
SIGCHLD | 20,17,18 | IGN | Fëmija ndaloi ose përfundoi |
SIGCONT | 19,18,25 | Vazhdoni nëse jeni ndalur | |
SIGSTOP | 17,19,23 | stop | Ndaloni procesin |
SIGTSTP | 18,20,24 | stop | Stop typed në tty |
SIGTTIN | 21,21,26 | stop | input tty për procesin e sfondit |
SIGTTOU | 22,22,27 | stop | prodhimit tty për procesin e sfondit |
Sinjalet SIGKILL dhe SIGSTOP nuk mund të kapen, bllokohen ose injorohen.
Pastaj sinjalet nuk janë në standardin POSIX.1 por përshkruhen në SUSv2 dhe SUSv3 / POSIX 1003.1-2001.
sinjal | vlerë | veprim | koment |
SIGPOLL | afat | Ngjarje pollable (Sys V). Sinonim i SIGIO | |
SIGPROF | 27,27,29 | afat | Kohëmatësi i profilizimit skadoi |
SIGSYS | 12 - 12 | Bërthamë | Argument i keq për rutinën (SVID) |
SIGTRAP | 5 | Bërthamë | Gjurmë në gjurmët e trapeve |
SIGURG | 16,23,21 | IGN | Gjendja urgjente në fole (4.2 BSD) |
SIGVTALRM | 26,26,28 | afat | Ora virtuale me alarm (4.2 BSD) |
SIGXCPU | 24,24,30 | Bërthamë | Kufiri i kohës së CPU-së u tejkalua (4.2 BSD) |
SIGXFSZ | 25,25,31 | Bërthamë | Kufiri i madhësisë së dokumentit u tejkalua (4.2 BSD) |
Deri në dhe duke përfshirë Linux 2.2, sjellja e parazgjedhur për SIGSYS , SIGXCPU , SIGXFSZ dhe (në arkitekturë të ndryshëm nga SPARC dhe MIPS) SIGBUS do të përfundonte procesin (pa një depon bazë). (Në disa Unices tjera veprimi i parazgjedhur për SIGXCPU dhe SIGXFSZ është të përfundojë procesin pa një depon bazë.) Linux 2.4 përputhet me kërkesat POSIX 1003.1-2001 për këto sinjale, duke e përfunduar procesin me një depon bazë.
Sinjalet e ardhshme të ndryshme.
sinjal | vlerë | veprim | koment |
SIGEMT | 7, -, 7 | afat | |
SIGSTKFLT | -, 16, - | afat | Gabim në grumbull në koprocesor (i papërdorur) |
SIGIO | 23,29,22 | afat | I / O tani e mundur (4.2 BSD) |
SIGCLD | -, -, 18 | IGN | Sinonim për SIGCHLD |
SIGPWR | 29,30,19 | afat | Dështimi i rrymës (Sistemi V) |
SIGINFO | 29 -, - | Sinonim për SIGPWR | |
SIGLOST | -, -, - | afat | Bllokohet dosja e humbur |
SIGWINCH | 28,28,20 | IGN | Dritarja e resize sinjal (4.3 BSD, Sun) |
SIGUNUSED | -, 31, - | afat | Sinjal i papërdorur (do të jetë SIGSYS) |
(Sinjali 29 është SIGINFO / SIGPWR në një alfa por SIGLOST në një sparc.)
SIGEMT nuk është specifikuar në POSIX 1003.1-2001, por gjithsesi duket në shumicën e Unices të tjera, ku veprimi i tij i zakonshëm është zakonisht për të përfunduar procesin me një depon bazë.
SIGPWR (i cili nuk është specifikuar në POSIX 1003.1-2001) zakonisht injorohet sipas parazgjedhjes në ato Unices ku shfaqet.
SIGIO (i cili nuk është specifikuar në POSIX 1003.1-2001) është injoruar nga default në disa Unices të tjera.
Sinjalet në kohë reale
Linux mbështet sinjale në kohë reale siç është përcaktuar fillimisht në extensions POSIX.4 në kohë reale (dhe tani është përfshirë në POSIX 1003.1-2001). Linux mbështet 32 sinjale në kohë reale, të numëruara nga 32 ( SIGRTMIN ) në 63 ( SIGRTMAX ). (Programet duhet t'i referohen gjithmonë sinjaleve në kohë reale duke përdorur sinjalizimin SIGRTMIN + n, meqë sfera e numrave të sinjalit në kohë reale ndryshon nga Unices.)
Ndryshe nga sinjalet standarde, sinjalet në kohë reale nuk kanë kuptime të paracaktuara: të gjithë sinjalet në kohë reale mund të përdoren për qëllime të përcaktuara nga aplikimi. (Vini re, megjithatë, se zbatimi i LinuxThreads përdor tre sinjalet e para në kohë reale.)
Veprimi i parazgjedhur për një sinjal të pashembullt në kohë reale është ndërprerja e procesit të pranimit.
Sinjalet në kohë reale dallohen nga:
- Shembuj të shumëfishta të sinjaleve në kohë reale mund të jenë në radhë. Në të kundërt, nëse paraqiten raste të shumta të një sinjali standard, ndërkohë që sinjali është aktualisht i bllokuar, atëherë vetëm një rast është në radhë.
- Nëse sinjali është dërguar duke përdorur sigueue (2), një sinjal mund të dërgohet një vlerë shoqëruese (ose një numër i plotë ose një tregues). Nëse procesi i marrjes krijon një mbajtës për këtë sinjal duke përdorur flamurin SA_SIGACTION për sigaction (2) atëherë ai mund të marrë këto të dhëna nëpërmjet fushës si_value të strukturës siginfo_t të kaluar si argumenti i dytë tek mbajtësi. Për më tepër, fushat si_pid dhe si_uid të kësaj strukture mund të përdoren për të marrë PID dhe ID të vërtetë të përdoruesit të procesit që dërgon sinjalin.
- Sinjalet në kohë reale dërgohen në një mënyrë të garantuar. Sinjalet e shumëfishta në kohë reale të të njëjtit lloj janë dorëzuar sipas porosisë së tyre. Nëse sinjale të ndryshme në kohë reale dërgohen në një proces, ato dorëzohen duke filluar me sinjalin me numër më të ulët. (Dmth, sinjalet me numër të ulët kanë përparësi më të lartë.)
Nëse të dy sinjalet standarde dhe në kohë reale janë në pritje për një proces, POSIX e lë atë të paspecifikuar që dërgohet së pari. Linux, si shumë implementime të tjera, u jep prioritet sinjaleve standarde në këtë rast.
Sipas POSIX, një implementim duhet të lejojë të paktën _POSIX_SIGQUEUE_MAX (32) sinjale në kohë reale të jenë në radhë në një proces. Sidoqoftë, në vend që të vendoset një limit për-proces, Linux imponon një kufi të gjerë të sistemit në numrin e sinjaleve në kohë reale në radhë për të gjitha proceset.
Ky limit mund të shihet (dhe me privilegje) të ndryshuar nëpërmjet skedarit / proc / sys / kernel / rtsig-max . Një skedar i lidhur, / proc / sys / kernel / rtsig-max , mund të përdoret për të zbuluar sa sinjale në kohë reale janë aktualisht në radhë.
PËRCAKTIMI PËR
POSIX.1
E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.