Signal - Linux / Unix naredba

Linux podržava pouzdane signale POSIX (u daljem tekstu "standardni signali") i POSIX signale u realnom vremenu.

Standardni signali

Linux podržava standardne signale navedene u nastavku. Nekoliko brojeva signala zavisi od arhitekture, kako je navedeno u koloni "Vrednost". (Kada su date tri vrednosti, prva je obično validna za alfa i sparc, srednja za i386, ppc i sh, a poslednja za mips.

A - označava da signal nije prisutan na odgovarajućoj arhitekturi.)

Unosi u stupcu "Akcija" tabele navode podrazumevanu akciju za signal, kako slijedi:

Termin

Podrazumevana akcija je da prekine proces.

Ign

Podrazumevana radnja je ignorisanje signala.

Core

Podrazumevana akcija je da prekine proces i dump jezgro.

Stani

Podrazumevana akcija je zaustaviti proces.

Prvo signale opisane u originalnom POSIX.1 standardu.

Signal Vrednost Akcija Komentar
ili smrt procesa kontrole
SIGINT 2 Termin Prekini sa tastature
SIGQUIT 3 Core Prekinite sa tastature
SIGILL 4 Core Nelegalno Uputstvo
SIGABRT 6 Core Prekinite signal od prekida (3)
SIGFPE 8 Core Izuzetak sa plutajućim tačkama
SIGKILL 9 Termin Kill signal
SIGSEGV 11 Core Nevažeća referenca memorije
SIGPIPE 13 Termin Broken cijevi: pišite na cijev bez čitača
SIGALRM 14 Termin Signal tajmera iz alarma (2)
SIGTERM 15 Termin Prekidni signal
SIGUSR1 30,10,16 Termin Korisnički definisani signal 1
SIGUSR2 31,12,17 Termin Korisnički definisani signal 2
SIGCHLD 20,17,18 Ign Dete su prestale ili prestale
SIGCONT 19,18,25 Nastavite ako zaustavite
SIGSTOP 17,19,23 Stani Zaustavi proces
SIGTSTP 18,20,24 Stani Zaustavite unos na tty
SIGTTIN 21,21,26 Stani tty ulaz za pozadinski proces
SIGTTOU 22,22,27 Stani tty output za pozadinski proces

Signali SIGKILL i SIGSTOP ne mogu biti uhvaćeni, blokirani ili ignorisani.

Sledeći signal nije u standardu POSIX.1, već je opisan u SUSv2 i SUSv3 / POSIX 1003.1-2001.

Signal Vrednost Akcija Komentar
SIGPOLL Termin Položaj događaja (Sys V). Sinonim za SIGIO
SIGPROF 27,27,29 Termin Tajmer profiliranja je istekao
SIGSYS 12, -, 12 Core Loš argument za rutinu (SVID)
SIGTRAP 5 Core Trap / trap breakpoint
SIGURG 16,23,21 Ign Hitno stanje na utičnici (4.2 BSD)
SIGVTALRM 26,26,28 Termin Virtuelni budilnik (4.2 BSD)
SIGXCPU 24,24,30 Core Prekoračeni vremenski period CPU-a (4,2 BSD)
SIGXFSZ 25,25,31 Core Prekoračena veličina datoteke (4.2 BSD)

Do i uključujući Linux 2.2, podrazumevano ponašanje za SIGSYS , SIGXCPU , SIGXFSZ i (na arhitekturi osim SPARC-a i MIPS-a) SIGBUS je trebalo da prekine proces (bez deponije jezgra). (Na nekim drugim Unices-u, podrazumevana akcija za SIGXCPU i SIGXFSZ je da okonča proces bez deponije jezgra.) Linux 2.4 je u skladu sa zahtevima POSIX 1003.1-2001 za ove signale, okončavajući proces sa deponijom jezgra.

Sledeći razni drugi signali.

Signal Vrednost Akcija Komentar
SIGEMT 7, -, 7 Termin
SIGSTKFLT -, 16, - Termin Greška pri skladištenju na koprocesor (neiskorišteno)
SIGIO 23,29,22 Termin I / O je sada moguć (4.2 BSD)
SIGCLD -, -, 18 Ign Sinonim za SIGCHLD
SIGPWR 29,30,19 Termin Ispravka napajanja (sistem V)
SIGINFO 29, -, - Sinonim za SIGPWR
SIGLOST -, -, - Termin Izgubljena brava datoteke
SIGWINCH 28,28,20 Ign Signal za promjenu veličine prozora (4.3 BSD, Sunce)
SIGUNUSED -, 31, - Termin Neupotrebljeni signal (biće SIGSYS)

(Signal 29 je SIGINFO / SIGPWR na alfi, ali SIGLOST na sparc.)

SIGEMT nije naveden u POSIX 1003.1-2001, ali se bez ikakvog pojavljivanja pojavljuje na većini drugih Unices-a, gde je njegova podrazumevana akcija obično da obustavi proces pomoću glavne deponije.

SIGPWR (koji nije naveden u POSIX 1003.1-2001) obično se zanemaruje na ostalim Unices-u gde se pojavljuje.

SIGIO (koji nije naveden u POSIX 1003.1-2001) je podrazumevano ignorisan na nekoliko drugih Unices.

Signali u realnom vremenu

Linux podržava signale u realnom vremenu kao što su prvobitno definisani u POSIX.4 nadogradnjama u realnom vremenu (i sada uključeni u POSIX 1003.1-2001). Linux podržava 32 signala u realnom vremenu, numeriranih od 32 ( SIGRTMIN ) do 63 ( SIGRTMAX ). (Programi se trebaju uvijek odnositi na signale u realnom vremenu koristeći oznaku SIGRTMIN + n, jer se opseg brojeva signala u realnom vremenu razlikuje u Unices-u.)

Za razliku od standardnih signala, signali u realnom vremenu nemaju predefinisano značenje: čitav skup signala u realnom vremenu može se koristiti za namene definisane u aplikacijama. (Imajte na umu da implementacija LinuxThreads koristi prva tri signala u realnom vremenu.)

Podrazumevana akcija za unhandled signal u realnom vremenu je da prekine proces prijema.

Signali u realnom vremenu se razlikuju po sledećem:

  1. Višestruki primjeri signala u realnom vremenu mogu se staviti u red. Nasuprot tome, ako se isporučuju višestruke instance standardnog signala, dok je taj signal trenutno blokiran, onda se samo jedna instanca nalazi u redu.
  2. Ako se signal šalje pomoću sigqueue (2), prateća vrijednost (bilo cijeli broj ili pokazivač) se može poslati s signalom. Ako proces primanja uspostavlja upravljač za ovaj signal pomoću oznake SA_SIGACTION do sigaction (2), onda može dobiti ove podatke preko polja si_value strukture siginfo_t koja se prenosi kao drugi argument upravljaca. Štaviše, polja si_pid i si_uid ove strukture mogu se koristiti za dobijanje PID-a i stvarnog ID-a korisnika procesa slanja signala.
  3. Signali u realnom vremenu se isporučuju u garantovanom redosledu. Višestruki signali istog tipa istog tipa se isporučuju u redosledu kojim su poslati. Ako se različiti signali u realnom vremenu šalju u proces, oni se isporučuju počevši od najnižeg signala. (Ie, signali sa malim brojem imaju najviši prioritet.)

Ako su u toku i standardni i realni vremenski signali za proces, POSIX ga ostavlja neodređenim i isporučuje se prvo. Linux, kao i mnoge druge implementacije, daje prednost standardnim signalima u ovom slučaju.

Prema POSIX-u, implementacija bi trebala dozvoliti da bar _POSIX_SIGQUEUE_MAX (32) signali u realnom vremenu budu stavljeni u red u procesu. Međutim, umesto postavljanja ograničenja po procesu, Linux nameće ograničenje na nivou sistema na broj redovnih signala u redovnom vremenu za sve procese.

Ovo ograničenje se može pregledati (i uz privilegiju) preko datoteke / proc / sys / kernel / rtsig-max . Povezani fajl, / proc / sys / kernel / rtsig-max , može se koristiti za saznanje koliko trenutno signala u redosledu.

SAGLASNOST

POSIX.1

Važno: Koristite komandu čovjeka ( % čovjek ) da biste videli kako se na vašem računaru koristi komanda.