Skip to main content

Signal - Linux / Unix naredba

Python tutorijal - Moduli i funkcije modula #7 (Lipanj 2025)

Python tutorijal - Moduli i funkcije modula #7 (Lipanj 2025)
Anonim

Linux podržava i POSIX pouzdane signale (u daljnjem tekstu "standardni signali") i POSIX real-time signali.

Standardni signali

Linux podržava dolje navedene standardne signale. Nekoliko signalnih brojeva ovisi o arhitekturi, kao što je naznačeno u stupcu "Vrijednost". (Gdje su tri vrijednosti, prva je obično valjana za alfa i sparc, srednji za i386, ppc i sh, a posljednji za mips.

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

Unosi u stupcu "Akcija" u tablici određuju zadanu akciju za signal, kako slijedi:

Termin

Zadana radnja je prekinuti postupak.

IGN

Zadana radnja je zanemariti signal.

srž

Zadana radnja je ukinuti proces i odlaganje jezgre.

Stop

Zadana radnja je zaustavljanje postupka.

Najprije signali opisani u izvornom POSIX.1 standardu.

SignalVrijednostRadnjaKomentar
ili smrti kontrole procesa
SIGINT2TerminPrekinite s tipkovnice
SIGQUIT3sržZatvorite tipkovnicu
SIGILL4sržNezakonito uputstvo
SIGABRT6sržPrekini signal iz prekid (3)
SIGFPE8sržIzuzetak s pomičnim zarezom
SIGKILL9TerminUbiti signal
SIGSEGV11sržNevažeća referenca za memoriju
SIGPIPE13TerminSlomljena cijev: napiši cijev bez čitača
SIGALRM14TerminSignal vremena iz tvrtke alarm (2)
SIGTERM15TerminSignal završetka
SIGUSR130,10,16TerminKorisnički definirani signal 1
SIGUSR231,12,17TerminKorisnički definiran signal 2
SIGCHLD20,17,18IGNDijete je prestalo ili prestalo
SIGCONT19,18,25 Nastavi ako se zaustavi
SIGSTOP17,19,23StopZaustavi postupak
SIGTSTP18,20,24StopPrestani tipkati na tty
SIGTTIN21,21,26Stoptty ulaz za pozadinski proces
SIGTTOU22,22,27Stoptty izlaz za pozadinski proces

SignaliSIGKILL iSIGSTOP ne može se uhvatiti, blokirati ili zanemariti.

Dalje signali nisu u POSIX.1 standardu, ali opisani su u SUSv2 i SUSv3 / POSIX 1003.1-2001.

SignalVrijednostRadnjaKomentar
SIGPOLL TerminPollable događaj (Sys V). Sinonim SIGIO
SIGPROF27,27,29TerminIstekao je profiliranje vremena
SIGSYS12,-,12sržLoši argument za rutinu (SVID)
SIGTRAP5sržTrap / prekidna točka
SIGURG16,23,21IGNHitno stanje na utičnici (4.2 BSD)
SIGVTALRM26,26,28TerminVirtualni alarmni sat (4.2 BSD)
SIGXCPU24,24,30sržVremensko ograničenje CPU-a premašeno (4.2 BSD)
SIGXFSZ25,25,31sržOgraničenje veličine datoteke premašeno (4.2 BSD)

Do i uključujući i Linux 2.2, zadano ponašanje zaSIGSYS, SIGXCPU, SIGXFSZ, i (na arhitekturama osim SPARC i MIPS)SIGBUS je bio prekinuti postupak (bez jezgre odlagališta). (Na nekim drugim Unices zadana radnja zaSIGXCPU iSIGXFSZ je prekinuti postupak bez jezgre odlagališta.) Linux 2.4 odgovara POSIX 1003.1-2001 zahtjevima za ove signale, završavajući proces s jezgrom izvatkom.

Sljedeći razni drugi signali.

SignalVrijednostRadnjaKomentar
SIGEMT7,-,7Termin
SIGSTKFLT-,16,-TerminPogreška stacka na koprocesoru (neiskorišteno)
SIGIO23,29,22TerminI / O sada je moguće (4.2 BSD)
SIGCLD-,-,18IGNSinonim za SIGCHLD
SIGPWR29,30,19TerminPrekid napajanja (sustav V)
SIGINFO29,-,- Sinonim za SIGPWR
SIGLOST-,-,-TerminZaključana je datoteka izgubljena
SIGWINCH28,28,20IGNSignal veličine prozora (4.3 BSD, Sunce)
SIGUNUSED-,31,-TerminNeiskorišteni signal (bit će SIGSYS)

(Signal 29 jeSIGINFO / SIGPWR na alfa, aliSIGLOST na sparcu.)

SIGEMT nije naveden u POSIX 1003.1-2001, no ipak se pojavljuje na većini ostalih Unices, gdje je zadana radnja obično dovršiti proces s osnovnim odljevom.

SIGPWR (koji nije naveden u POSIX 1003.1-2001) obično se prema zadanim postavkama zanemaruje na tim drugim Unices mjestima gdje se pojavljuje.

SIGIO (koji nije naveden u POSIX 1003.1-2001) zanemaruje se prema zadanim postavkama na nekoliko drugih Unices.

Signali u realnom vremenu

Linux podržava signale u stvarnom vremenu kao što je izvorno definirano u POSIX.4 ekstenzijama u stvarnom vremenu (a sada je uključeno u POSIX 1003.1-2001). Linux podržava 32 signala u realnom vremenu, broju od 32 (SIGRTMIN) do 63 (SIGRTMAX). (Programi se uvijek trebaju odnositi na signale u stvarnom vremenu pomoću notacijeSIGRTMIN+ n, jer se raspon brojeva signala u stvarnom vremenu razlikuje od Unicesa.)

Za razliku od standardnih signala, signali u stvarnom vremenu nemaju unaprijed definiranih značenja: cijeli niz signala u stvarnom vremenu može se koristiti za svrhe definirane u aplikaciji. (Napominjemo, međutim, da implementacija LinuxThreadsa koristi prva tri signala u realnom vremenu.)

Zadana radnja za neuključeni signal u stvarnom vremenu jest prekinuti postupak primanja.

Signali u stvarnom vremenu razlikuju se od sljedećeg:

  1. Mnogo primjera signala u realnom vremenu može biti u redu čekanja. Nasuprot tome, ako se isporučuju višestruke instance standardnog signala dok je taj signal trenutno blokiran, tada je samo jedan primjer u redu čekanja.
  2. Ako se signal šalje pomoćusigqueue(2), prateća vrijednost (bilo cijeli broj ili pokazivač) može se poslati s signalom. Ako postupak prijama uspostavlja rukovatelj za ovaj signal pomoćuSA_SIGACTION zastava nasigaction(2) onda može dobiti te podatke preko si_value polje siginfo_t struktura je prošla kao drugi argument autoru. Nadalje, si_pid i si_uid polja ove strukture mogu se koristiti za dobivanje PID-a i stvarnog korisničkog ID-a procesa koji šalje signal.
  3. Signali u stvarnom vremenu isporučuju se u zajamčenom redoslijedu. Više signala istog tipa u stvarnom vremenu isporučuju se redoslijedom kojim su poslani. Ako se različitim signalima u stvarnom vremenu šalju procesu, one se isporučuju počevši od signala s najnižim brojem. (Npr., Signali s malim brojem imaju najveći prioritet.)

Ako su oba standardna i signala u stvarnom vremenu u tijeku za proces, POSIX ostavlja neodređen koji se isporučuje prvi. Linux, kao i mnoge druge implementacije, daje prioritet standardnim signalima u ovom slučaju.

Prema POSIX-u, implementacija bi trebala omogućiti najmanje _POSIX_SIGQUEUE_MAX (32) signala u stvarnom vremenu da budu na čekanju na proces. Međutim, umjesto postavljanja ograničenja po procesu, Linux nameće ograničenje na razini cijelog sustava na broj zakašnjelih signala u stvarnom vremenu za sve procese.

Ovo se ograničenje može promatrati (i uz privilegiju) mijenjati pomoću / Proc / sys / kernel / rtsig-max datoteka. Slična datoteka, / Proc / sys / kernel / rtsig-max , može se koristiti za otkrivanje koliko je signala u realnom vremenu trenutačno u redu čekanja.

SUDJELUJUĆI U

POSIX.1

Važno: Koristiti čovjek naredba ( % čovjek ) kako biste vidjeli kako se naredba koristi na vašem računalu.