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 | I-abort ang signal mula sa 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 signalSIGKILL atSIGSTOP ay hindi maaaring mahuli, hinarangan, o hindi pinansin.
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 saSIGSYS, SIGXCPU, SIGXFSZ, at (sa mga arkitektura maliban sa SPARC at MIPS)SIGBUS ay upang wakasan ang proseso (nang walang isang core dump). (Sa ilang iba pang mga Unices ang default na pagkilos para saSIGXCPU atSIGXFSZ ay upang wakasan ang proseso nang walang pangunahing dump.) Ang Linux 2.4 ay sumusunod sa 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 aySIGINFO / SIGPWR sa isang alpha ngunitSIGLOST sa isang sparc.)
SIGEMT ay hindi tinukoy sa POSIX 1003.1-2001, ngunit neverthless ay lumilitaw sa karamihan ng iba pang mga Unices, kung saan ang default na aksyon ay karaniwang upang wakasan ang proseso sa isang core dump.
SIGPWR (na hindi tinukoy sa POSIX 1003.1-2001) ay kadalasang binabalewala sa pamamagitan ng default sa iba pang mga Unices kung saan ito lilitaw.
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 signal, na bilang mula sa 32 (SIGRTMIN) hanggang 63 (SIGRTMAX). (Ang mga programa ay dapat palaging sumangguni sa mga real-time signal gamit ang notasyonSIGRTMIN+ 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:
- 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.
- Kung ang signal ay ipinadala gamitsigqueue(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 isang handler para sa signal na ito gamit angSA_SIGACTION bandila sasigayon(2) pagkatapos ay makuha nito ang data na ito sa pamamagitan ng si_value larangan ng siginfo_t istraktura ang pumasa bilang pangalawang argumento sa handler. Higit pa rito, ang si_pid at si_uid ang mga patlang ng istraktura na ito ay maaaring magamit upang makuha ang PID at tunay na user ID ng proseso ng pagpapadala ng signal.
- 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. (I.e., 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 file. Isang kaugnay na file, / proc / sys / kernel / rtsig-max , maaaring magamit upang malaman kung gaano karaming mga real-time na signal ang kasalukuyang naka-queue.
Pagsasagawa ng
POSIX.1
Mahalaga: Gamitin ang lalaki command ( % lalaki ) upang makita kung paano ginagamit ang utos sa iyong partikular na computer.