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ālu no pārtraukt (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 trauksme (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āliSIGKILL unSIGSTOP nevar nozvejot, 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 un ieskaitot Linux 2.2, noklusējuma darbībasSIGSYS, SIGXCPU, SIGXFSZ, un (par arhitektūru, kas nav SPARC un MIPS)SIGBUS bija pārtraukt procesu (bez kodols dump). (Dažās citās vienībās ir noklusējuma darbībaSIGXCPU unSIGXFSZ ir izbeigt procesu bez kodola izgāšanas.) Linux 2.4 atbilst šiem POS signāliem paredzētiem POSIX 1003.1-2001 nosacījumiem, pārtraucot procesu ar kodols 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 irSIGINFO / SIGPWR uz alfa betSIGLOST par sparc.)
SIGEMT nav norādīts POSIX 1003.1-2001 versijā, bet nekad neatrodas vairumā 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 pēc noklusējuma tām citām 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 ir jāatsaucas uz reāllaika signāliem, izmantojot apzīmējumuSIGRTMIN+ n, jo reāllaika signālu skaita diapazons dažādās Unice versijās atšķiras.)
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, izmantojotsigqueue(2) ar signālu var nosūtīt pavadošo 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, izmantojotSA_SIGACTION karodziņš uzsigaka(2), tad var iegūt šos datus, izmantojot si_value laukā siginfo_t struktūra kā otrs arguments apstrādātājam. Turklāt, si_pid un si_uid Šīs struktūras 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. (I.e., 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 / proc / sys / kernel / rtsig-max fails Saistīts fails / proc / sys / kernel / rtsig-max , var izmantot, lai noskaidrotu, cik reāllaika signālu pašlaik ir rindā.
Kas atbilst
POSIX.1
Svarīgs: Izmantojiet cilvēks komanda ( % cilvēks ), lai redzētu, kā komanda tiek izmantota jūsu konkrētajā datorā.