Skip to main content

Signāls - Linux / Unix komandu

Anonim

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ālsVērtībaDarbībaKomentārs
vai kontroles procesa nāve
SIGINT2TermiņšPārtraukt no tastatūras
SIGQUIT3CoreIziet no tastatūras
SIGILL4CoreNelikumīga instrukcija
SIGABRT6CorePārtraukt signālu no pārtraukt (3)
SIGFPE8CorePeldošā komata izņēmums
SIGKILL9TermiņšNogalināt signālu
SIGSEGV11CoreNederīga atmiņas norāde
SIGPIPE13TermiņšBroken pipe: rakstīt caurulē bez lasītāju
SIGALRM14TermiņšTaimera signāls no trauksme (2)
SIGTERM15TermiņšIzbeigšanas signāls
SIGUSR130,10,16TermiņšLietotāja definēts signāls 1
SIGUSR231,12,17TermiņšLietotāja definēts signāls 2
SIGCHLD20,17,18IgnBērns apstājies vai izbeidzas
SIGCONT19,18,25 Turpināt, ja tiek apturēta
SIGSTOP17,19,23ApstātiesApstāšanās process
SIGTSTP18,20,24ApstātiesPārtraukt drukāt tty
SIGTTIN21,21,26Apstātiestty ievadi fona procesam
SIGTTOU22,22,27Apstātiestty 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ālsVērtībaDarbībaKomentārs
SIGPOLL TermiņšPiesārņojošs notikums (Sys V). SIGIO sinonīms
SIGPROF27,27,29TermiņšProfilēšanas taimeris ir beidzies
SIGSYS12,-,12CoreNepareizs rutīnas arguments (SVID)
SIGTRAP5CoreTrace / pārtraukuma punkta slazds
SIGURG16,23,21IgnSteidzams stāvoklis ligzdā (4.2 BSD)
SIGVTALRM26,26,28TermiņšVirtuālais modinātājs (4.2 BSD)
SIGXCPU24,24,30CoreCPU laika limits ir pārsniegts (4.2 BSD)
SIGXFSZ25,25,31CoreFaila 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ālsVērtībaDarbībaKomentārs
SIGEMT7,-,7Termiņš
SIGSTKFLT-,16,-TermiņšKopprocesora bojājums (neizmantots)
SIGIO23,29,22TermiņšI / O tagad ir iespējams (4.2 BSD)
SIGCLD-,-,18IgnSIGCHLD sinonīms
SIGPWR29,30,19TermiņšStrāvas zudums (sistēma V)
SIGINFO29,-,- SIGPWR sinonīms
SIGLOST-,-,-TermiņšFailu bloķēšana zaudēta
SIGWINCH28,28,20IgnLoga 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:

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