Signal - Linux / Unix Command

Sinusuportahan ng Linux ang parehong POSIX maaasahang signal (simula dito "standard signal") at POSIX real-time na signal.

Standard Signals

Sinusuportahan ng Linux ang karaniwang mga signal na nakalista sa ibaba. Maraming mga numero ng signal ay depende sa arkitektura, tulad ng ipinahiwatig sa column na "Halaga". (Kung saan ibinigay ang tatlong halaga, ang unang isa ay karaniwang may-bisa para sa alpha at sparc, ang gitna para sa i386, ppc at sh, at ang huling isa para sa mips.

A - nagsasaad na ang isang senyas ay wala sa kaukulang arkitektura.)

Ang mga entry sa column na "Pagkilos" ng talahanayan ay tumutukoy sa default action para sa signal, tulad ng sumusunod:

Kataga

Ang default na pagkilos ay upang wakasan ang proseso.

Ign

Ang default na pagkilos ay huwag pansinin ang signal.

Core

Ang default na pagkilos ay upang wakasan ang proseso at dump core.

Itigil

Ang default na pagkilos ay upang itigil ang proseso.

Una ang mga signal na inilarawan sa orihinal na pamantayan ng POSIX.1.

Signal Halaga Aksyon Magkomento
o kamatayan ng pagkontrol ng proseso
SIGINT 2 Kataga Makagambala mula sa keyboard
SIGQUIT 3 Core Tumigil mula sa keyboard
SIGILL 4 Core Ilegal na Pagtuturo
SIGABRT 6 Core Abort ang signal mula sa pag- abort (3)
SIGFPE 8 Core Pagbubukod ng eksaktong punto
SIGKILL 9 Kataga Patayin ang signal
SIGSEGV 11 Core Di-wastong reference sa memorya
SIGPIPE 13 Kataga Broken pipe: sumulat sa pipe na walang mga mambabasa
SIGALRM 14 Kataga Timer signal mula sa alarma (2)
SIGTERM 15 Kataga Signal ng pagwawakas
SIGUSR1 30,10,16 Kataga Ang tinukoy ng user na signal 1
SIGUSR2 31,12,17 Kataga Ang tinukoy ng user na signal 2
SIGCHLD 20,17,18 Ign Huminto o nagwakas ang bata
SIGCONT 19,18,25 Magpatuloy kung tumigil
SIGSTOP 17,19,23 Itigil Itigil ang proseso
SIGTSTP 18,20,24 Itigil Ihinto ang pag-type sa tty
SIGTTIN 21,21,26 Itigil input ng tty para sa proseso ng background
SIGTTOU 22,22,27 Itigil tty output para sa proseso ng background

Ang mga senyas na SIGKILL at SIGSTOP ay hindi maaaring mahuli, mabaril , o hindi papansinin.

Susunod na ang mga signal ay hindi sa standard na POSIX.1 ngunit inilarawan sa SUSv2 at SUSv3 / POSIX 1003.1-2001.

Signal Halaga Aksyon Magkomento
SIGPOLL Kataga Pollable event (Sys V). Kasingkahulugan ng SIGIO
SIGPROF 27,27,29 Kataga Nag-expire ang timer ng profile
SIGSYS 12, -, 12 Core Masamang argumento sa routine (SVID)
SIGTRAP 5 Core Trace / breakpoint trap
SIGURG 16,23,21 Ign Urgent condition on socket (4.2 BSD)
SIGVTALRM 26,26,28 Kataga Virtual alarm clock (4.2 BSD)
SIGXCPU 24,24,30 Core Lumagpas ang limitasyon sa oras ng CPU (4.2 BSD)
SIGXFSZ 25,25,31 Core Lumagpas ang limitasyon sa laki ng file (4.2 BSD)

Hanggang sa at kabilang ang Linux 2.2, ang default na pag-uugali para sa SIGSYS , SIGXCPU , SIGXFSZ , at (sa mga arkitektura maliban sa SPARC at MIPS) ay tinapos ng SIGBUS ang proseso (walang core dump). (Sa ilang iba pang mga Unices ang default na aksyon para sa SIGXCPU at SIGXFSZ ay upang wakasan ang proseso nang walang pangunahing dump.) Sinusunod ng Linux 2.4 ang mga kinakailangang POSIX 1003.1-2001 para sa mga signal na ito, na tinatapos ang proseso sa isang core dump.

Susunod na iba't ibang mga signal.

Signal Halaga Aksyon Magkomento
SIGEMT 7, -, 7 Kataga
SIGSTKFLT -, 16, - Kataga Stack fault sa coprocessor (hindi ginagamit)
SIGIO 23,29,22 Kataga Ako / O posible na ngayon (4.2 BSD)
SIGCLD -, -, 18 Ign Ang isang kasingkahulugan para sa SIGCHLD
SIGPWR 29,30,19 Kataga Pagkabigo ng lakas (System V)
SIGINFO 29, -, - Ang isang kasingkahulugan para sa SIGPWR
SIGLOST -, -, - Kataga Nawala ang lock ng file
SIGWINCH 28,28,20 Ign Baguhin ang signal ng window (4.3 BSD, Sun)
SIGUNUSED -, 31, - Kataga Hindi ginagamit signal (ay magiging SIGSYS)

(Signal 29 ay SIGINFO / SIGPWR sa isang alpha ngunit SIGLOST sa isang sparc.)

Ang SIGEMT ay hindi tinukoy sa POSIX 1003.1-2001, ngunit walang lilitaw sa karamihan ng iba pang mga Unices, kung saan ang default na aksyon ay karaniwang upang wakasan ang proseso sa isang core dump.

Ang SIGPWR (na kung saan ay hindi tinukoy sa POSIX 1003.1-2001) ay kadalasang binabalewala sa pamamagitan ng default sa mga ibang Unices kung saan ito lilitaw.

Ang SIGIO (na hindi tinukoy sa POSIX 1003.1-2001) ay binabalewala sa pamamagitan ng default sa maraming iba pang mga Unices.

Mga Real-time na signal

Sinusuportahan ng Linux ang mga real-time na signal bilang orihinal na tinukoy sa POSIX.4 real-time na mga extension (at ngayon ay kasama sa POSIX 1003.1-2001). Sinusuportahan ng Linux ang 32 real-time na mga signal, na may bilang mula sa 32 ( SIGRTMIN ) hanggang 63 ( SIGRTMAX ). (Ang mga programa ay dapat laging tumutukoy sa mga real-time signal gamit ang notasyon SIGRTMIN + n, dahil ang hanay ng mga real-time na mga numero ng signal ay nag-iiba sa Unices.)

Hindi tulad ng karaniwang mga signal, ang mga real-time na signal ay walang mga paunang kahulugan na kahulugan: ang buong hanay ng mga real-time na signal ay maaaring gamitin para sa mga layuning tinukoy ng application. (Gayunman, tandaan na ang pagpapatupad ng LinuxThreads ay gumagamit ng unang tatlong real-time na signal.)

Ang default na aksyon para sa isang walang-hawak na real-time na signal ay upang tapusin ang proseso ng pagtanggap.

Ang mga real-time na signal ay nakikilala sa pamamagitan ng mga sumusunod:

  1. Maramihang mga pagkakataon ng real-time na mga signal ay maaaring queued. Sa kaibahan, kung ang maraming mga pagkakataon ng isang karaniwang signal ay inihatid habang ang senyas na ito ay kasalukuyang naharang, pagkatapos ay isang pagkakataon lamang ang naka-queue.
  2. Kung ang senyas ay ipinadala gamit ang sigqueue (2), ang isang kasamang halaga (alinman sa isang integer o isang pointer) ay maaaring ipadala gamit ang signal. Kung ang proseso ng pagtanggap ay nagtatatag ng handler para sa signal na ito gamit ang SA_SIGACTION flag sa sigaction (2) pagkatapos ay makuha nito ang data na ito sa pamamagitan ng si_value field ng siginfo_t na istrakturang naipapasa bilang pangalawang argument sa handler. Higit pa rito, ang si_pid at si_uid na mga larangan ng istrukturang ito ay maaaring magamit upang makakuha ng PID at tunay na user ID ng proseso ng pagpapadala ng signal.
  3. Ang mga real-time na signal ay naihatid sa isang garantisadong order. Maramihang mga real-time na signal ng parehong uri ay inihatid sa pagkakasunud-sunod na ipinadala sa kanila. Kung ang iba't ibang mga real-time na signal ay ipinapadala sa isang proseso, ang mga ito ay inihatid na nagsisimula sa pinakamababang bilang na signal. (Ibig sabihin, ang mga mababang-bilang na signal ay may pinakamataas na priyoridad.)

Kung ang parehong mga standard at real-time na mga signal ay nakabinbin para sa isang proseso, POSIX ay umalis na ito na hindi natukoy na unang naihatid. Ang Linux, tulad ng maraming iba pang mga pagpapatupad, ay nagbibigay ng prayoridad sa karaniwang mga signal sa kasong ito.

Ayon sa POSIX, ang isang pagpapatupad ay dapat magpapahintulot sa hindi bababa sa _POSIX_SIGQUEUE_MAX (32) mga real-time na signal na ma-queued sa isang proseso. Gayunpaman, sa halip na ilagay ang isang limitasyon sa bawat proseso, ipinapatupad ng Linux ang isang limitasyon ng system sa bilang ng mga queued real-time na signal para sa lahat ng mga proseso.

Maaaring matingnan ang limitasyon (at may pribilehiyo) sa pamamagitan ng / proc / sys / kernel / rtsig-max na file. Ang isang kaugnay na file, / proc / sys / kernel / rtsig-max , ay maaaring magamit upang malaman kung gaano karaming mga real-time na signal ang kasalukuyang naka-queue.

Pagsasagawa ng

POSIX.1

Mahalaga: Gamitin ang command ng tao ( % man ) upang makita kung paano ginagamit ang isang utos sa iyong partikular na computer.