Linux atbalsta gan POSIX uzticamus signālus (turpmāk tekstā "standarta signālus"), gan POSIX reāllaika signālus.
Standarta signāli
Linux atbalsta tālāk minētos standarta signālus. Vairāki signālu numuri ir atkarīgi no arhitektūras, kā norādīts slejā "Vērtība". (Ja ir norādītas trīs vērtības, pirmā parasti ir derīga alfa un sparc, vidējā i386, ppc un sh, un pēdējā - mips.
A - apzīmē, ka attiecīgajā arhitektūrā nav signāla.)
Tabulas slejas "Darbība" ieraksti norāda noklusējuma darbību signālam šādi:
Termiņš
Noklusējuma darbība ir pārtraukt procesu.
Ign
Noklusējuma darbība ir ignorēt signālu.
Core
Noklusējuma darbība ir pārtraukt procesu un dump core.
Apstāties
Noklusējuma darbība ir pārtraukt procesu.
Vispirms signāli, kas aprakstīti sākotnējā POSIX.1 standartā.
Signāls | Vērtība | Darbība | Komentārs |
vai kontroles procesa nāve | |||
SIGINT | 2 | Termiņš | Pārtraukt no tastatūras |
SIGQUIT | 3 | Core | Iziet no tastatūras |
SIGILL | 4 | Core | Nelikumīga instrukcija |
SIGABRT | 6 | Core | Pārtraukt signāla pārtraukšanu (3) |
SIGFPE | 8 | Core | Peldošā komata izņēmums |
SIGKILL | 9 | Termiņš | Nogalināt signālu |
SIGSEGV | 11 | Core | Nederīga atmiņas norāde |
SIGPIPE | 13 | Termiņš | Broken pipe: rakstīt caurulē bez lasītāju |
SIGALRM | 14 | Termiņš | Taimera signāls no trauksmes (2) |
SIGTERM | 15 | Termiņš | Izbeigšanas signāls |
SIGUSR1 | 30,10,16 | Termiņš | Lietotāja definēts signāls 1 |
SIGUSR2 | 31,12,17 | Termiņš | Lietotāja definēts signāls 2 |
SIGCHLD | 20,17,18 | Ign | Bērns apstājies vai izbeidzas |
SIGCONT | 19,18,25 | Turpināt, ja tiek apturēta | |
SIGSTOP | 17,19,23 | Apstāties | Apstāšanās process |
SIGTSTP | 18,20,24 | Apstāties | Pārtraukt drukāt tty |
SIGTTIN | 21,21,26 | Apstāties | tty ievadi fona procesam |
SIGTTOU | 22,22,27 | Apstāties | tty izeja fona procesam |
Signālus SIGKILL un SIGSTOP nevar noķert, bloķēt vai ignorēt.
Nākošais signāls nav POSIX.1 standarta versijā, bet aprakstīts SUSv2 un SUSv3 / POSIX 1003.1-2001.
Signāls | Vērtība | Darbība | Komentārs |
SIGPOLL | Termiņš | Piesārņojošs notikums (Sys V). SIGIO sinonīms | |
SIGPROF | 27,27,29 | Termiņš | Profilēšanas taimeris ir beidzies |
SIGSYS | 12, -, 12 | Core | Nepareizs rutīnas arguments (SVID) |
SIGTRAP | 5 | Core | Trace / pārtraukuma punkta slazds |
SIGURG | 16,23,21 | Ign | Steidzams stāvoklis ligzdā (4.2 BSD) |
SIGVTALRM | 26,26,28 | Termiņš | Virtuālais modinātājs (4.2 BSD) |
SIGXCPU | 24,24,30 | Core | CPU laika limits ir pārsniegts (4.2 BSD) |
SIGXFSZ | 25,25,31 | Core | Faila lieluma limits ir pārsniegts (4.2 BSD) |
Līdz pat Linux 2.2 iekļaušanai , SIGSYS , SIGXCPU , SIGXFSZ un (citu arhitektūru, kas nav SPARC un MIPS) noklusējuma darbība SIGBUS bija pārtraukt procesu (bez kodola izgāšanas). (Dažās citās Vienībās noklusējuma darbība SIGXCPU un SIGXFSZ ir procesa pārtraukšana bez kodola izgāšanas.) Linux 2.4 atbilst šiem POS signāliem, kas paredz POSIX 1003.1-2001 prasības, pārtraucot procesu ar galveno dump.
Tālāk dažādi citi signāli.
Signāls | Vērtība | Darbība | Komentārs |
SIGEMT | 7, -, 7 | Termiņš | |
SIGSTKFLT | -, 16, - | Termiņš | Kopprocesora bojājums (neizmantots) |
SIGIO | 23,29,22 | Termiņš | I / O tagad ir iespējams (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | SIGCHLD sinonīms |
SIGPWR | 29,30,19 | Termiņš | Strāvas zudums (sistēma V) |
SIGINFO | 29, -, - | SIGPWR sinonīms | |
SIGLOST | -, -, - | Termiņš | Failu bloķēšana zaudēta |
SIGWINCH | 28,28,20 | Ign | Loga izmēra maiņas signāls (4.3 BSD, Sun) |
SIGUNUSED | -, 31, - | Termiņš | Neizmantots signāls (būs SIGSYS) |
(Signāls 29 ir SIGINFO / SIGPWR alfa versijā, bet SIGLOST - par sparc .)
SIGEMT nav norādīts POSIX 1003.1-2001 versijā, bet nekad neatrodas lielākajā daļā citu Unices, kur tā noklusējuma darbība parasti ir pabeigta procesā ar galveno dump.
SIGPWR (kas nav norādīts POSIX 1003.1-2001) parasti tiek ignorēts tiem citiem Unices, kur tas parādās.
SIGIO (kas nav norādīts POSIX 1003.1-2001) tiek ignorēts pēc noklusējuma vairākām citām Unices.
Reāllaika signāli
Linux atbalsta reāllaika signālus, kā sākotnēji definēts POSIX.4 reāllaika paplašinājumos (un tagad iekļauts POSIX 1003.1-2001). Linux atbalsta 32 reāllaika signālus, skaitot no 32 ( SIGRTMIN ) līdz 63 ( SIGRTMAX ). (Programmām vienmēr būtu jāatsaucas uz reāllaika signāliem, izmantojot apzīmējumu SIGRTMIN + n, jo reāllaika signālu skaits dažādās vienībās ir atšķirīgs.)
Atšķirībā no standarta signāliem reāllaika signāliem nav iepriekš definētas nozīmes: visu reālā laika signālu komplektu var izmantot noteiktiem mērķiem. (Tomēr ņemiet vērā, ka LinuxThreads ieviešana izmanto pirmos trīs reāllaika signālus.)
Noklusētā reāllaika signāla noklusējuma darbība ir pārtraukt saņemšanas procesu.
Reāllaika signāli atšķiras ar sekojošo:
- Vairākus reāllaika signālu gadījumus var ievietot rindā. Turpretim, ja tiek piegādāti vairāki standarta signāla gadījumi, kamēr šis signāls pašlaik ir bloķēts, tad tikai viens eksemplārs ir rindā.
- Ja signāls tiek nosūtīts, izmantojot signālu (2), ar signālu var nosūtīt pievienoto vērtību (vai nu veseli skaitļi vai rādītājs). Ja saņemšanas process izveido šī signāla apstrādātāju, izmantojot SA_SIGACTION karodziņu, lai izveidotu sigāciju (2), tas var iegūt šos datus, izmantojot siginfo_t struktūras si_value lauku, kas nodots kā otrais apstrādātāja arguments. Turklāt šīs struktūras si_pid un si_uid laukus var izmantot, lai iegūtu signāla nosūtīšanas procesa PID un reālo lietotāja ID.
- Reāllaika signāli tiek piegādāti garantētā pasūtījumā. Vairāki vienāda tipa reāllaika signāli tiek piegādāti tādā secībā, kādā tie tika nosūtīti. Ja procesam tiek nosūtīti dažādi reāllaika signāli, tie tiek piegādāti, sākot ar zemāko skaitļu signālu. (Ti, ar zemu skaitļu signāliem ir visaugstākā prioritāte.)
Ja procesu gaida gan standarta, gan reāllaika signāli, POSIX atstāj to nenoteiktu, kas tiek piegādāts vispirms. Linux, tāpat kā daudzi citi ieviešanas gadījumi, šajā gadījumā prioritāti piešķir standarta signāliem.
Saskaņā ar POSIX, īstenojumam jāļauj vismaz vismaz _POSIX_SIGQUEUE_MAX (32) reāllaika signālus uz rindu uz procesu. Tomēr, nevis lai novietotu katra procesa ierobežojumu, Linux visām sistēmām uzliek sistēmas rādītāja reāllaika signālu skaitu visiem procesiem.
Šo ierobežojumu var apskatīt (un ar privilēģiju) mainīt, izmantojot failu / proc / sys / kernel / rtsig-max . Saistīto failu, / proc / sys / kernel / rtsig-max , var izmantot, lai noskaidrotu, cik reāllaika signālu pašlaik ir rindā.
Kas atbilst
POSIX.1
Svarīgi: izmantojiet vīriešu komandu ( % man ), lai redzētu, kā komanda tiek izmantota jūsu konkrētajā datorā.