signal

Autres langues

Langue: pl

Autres versions - même langue

Version: 2002-06-13 (openSuse - 09/10/07)

Autres sections - même nom

Section: 7 (Divers)

NAZWA

signal - lista dostêpnych sygna³ów

OPIS

Linux wspiera zarówno rzeczywiste sygna³y POSIX-owe (zwane dalej "sygna³ami standardowymi"), jak i sygna³y POSIX-owe czasu rzeczywistego.

Sygna³y standardowe

Linux wspiera wymienione poni¿ej sygna³y standardowe. Numery niektórych sygna³ów zale¿± od architektury, co pokazano w kolumnie "Warto¶æ". (Je¿eli podano trzy warto¶ci, to zazwyczaj pierwsza obowi±zuje dla architektur alpha i sparc, ¶rodkowa dla i386, ppc i sh, a ostatnia dla mips. Znak - oznacza, ¿e sygna³ dla danej architektury nie wystêpuje.)

Wpisy w kolumnie "Akcja" tabeli okre¶laj± domy¶ln± akcjê dla danego sygna³u, jako jedn± z nastêpuj±cych:

Term
Domy¶ln± akcj± jest przerwanie procesu.
Ign
Domy¶ln± akcj± jest zignorowanie sygna³u.
Core
Domy¶ln± akcj± jest przerwanie procesu i zapisanie obrazu pamiêci (core).
Stop
Domy¶ln± akcj± jest zatrzymanie procesu.

Najpierw sygna³y opisane w pierwotnym standardzie POSIX.1.

Sygna³ Warto¶æ Akcja Komentarz




lub ¶mieræ procesu kontroluj±cego
SIGINT  2 Term Przerwanie nakazane z klawiatury
SIGQUIT  3 Core Wyj¶cie nakazane z klawiatury
SIGILL  4 Core Nielegalna instrukcja
SIGABRT  6 Core Sygna³ abort od abort(3)
SIGFPE  8 Core Wyj±tek zmiennoprzecinkowy
SIGKILL  9 Term Sygna³ Kill
SIGSEGV 11 Core Nieprawid³owa referencja pamiêciowa
SIGPIPE 13 Term Uszkodzony potok: zapis do potoku bez odbiorców
SIGALRM 14 Term Sygna³ timera od alarm(1)
SIGTERM 15 Term Sygna³ zakoñczenia pracy
SIGUSR1 30,10,16 Term Sygna³ 1 u¿ytkownika
SIGUSR2 31,12,17 Term Sygna³ 2 u¿ytkownika
SIGCHLD 20,17,18 Ign Potomek zatrzyma³ siê, lub zakoñczy³ pracê
SIGCONT 19,18,25 Kontynuuj, je¶li zatrzyma³ siê
SIGSTOP 17,19,23 Stop Zatrzymaj proces
SIGTSTP 18,20,24 Stop Zatrzymanie napisane z tty
SIGTTIN 21,21,26 Stop wej¶cie tty dla procesu w tle
SIGTTOU 22,22,27 Stop wyj¶cie tty dla procesu w tle

Sygna³ów SIGKILL oraz SIGSTOP nie mo¿na przechwyciæ, zablokowaæ ani zignorowaæ.

Nastêpnie sygna³y nie wystêpuj±ce w standardzie POSIX.1, ale opisane w SUSv2 lub w SUSv3 / POSIX 1003.1-2001.

Sygna³ Warto¶æ Akcja Komentarz




SIGPOLL Term Zdarzenie odpytywalne (Sys V). Synonim SIGIO
SIGPROF 27,27,29 Term Przeterminowanie zegara profilowego
SIGSYS 12,-,12 Core Niew³a¶ciwy argument funkcji (SVID)
SIGTRAP 5 Core ¦ledzenie/pu³apka kontrolna
SIGURG 16,23,21 Ign Pilny warunek na gnie¼dzie (BSD 4.2)
SIGVTALRM 26,26,28 Term Wirtualny zegar alarmu (BSD 4.2)
SIGXCPU 24,24,30 Core Przekroczone ograniczenie czasu CPU (BSD 4.2)
SIGXFSZ 25,25,31 Core Przekroczone ograniczenie rozmiaru pliku (BSD 4.2)

Do wersji 2.2 Linuksa (w³±cznie) domy¶lne zachowanie dla sygna³ów SIGSYS, SIGXCPU, SIGXFSZ oraz (na architekturach innych ni¿ SPARC i MIPS) SIGBUS polega³o na przerwaniu procesu (bez zrzutu pamiêci). (W niektórych innych Uniksach domy¶lne zachowanie dla SIGXCPU i SIGXFSZ polega na przerwaniu procesu bez zrzutu pamiêci.) Linux 2.4 jest zgodny ze wymaganiami standardu POSIX 1003.1-2001 w zakresie przerywania procesu ze zrzutem pamiêci.

A teraz ró¿ne inne sygna³y.

Sygna³ Warto¶æ Akcja Komentarz




SIGEMT 7,-,7 Term
SIGSTKFLT -,16,- Term B³±d stosu koprocesora (nieu¿ywany)
SIGIO 23,29,22 Term I/O teraz mo¿liwe (BSD 4.2)
SIGCLD -,-,18 Ign Synonim SIGCHLD
SIGPWR 29,30,19 Term B³±d zasilania (System V)
SIGINFO 29,-,- Synonim SIGPWR
SIGLOST -,-,- Term Utracono blokadê pliku
SIGWINCH 28,28,20 Ign Sygna³ zmiany rozmiarów okna (BSD 4.3, Sun)
SIGUNUSED -,31,- Term Nie u¿yty sygna³ (wyst±pi SIGSYS)

(Sygna³ 29 oznacza SIGINFO / SIGPWR na architekturze alpha, lecz SIGLOST na architekturze sparc.)

SIGEMT nie jest wymieniony w POSIX 1003.1-2001, lecz pomimo to pojawia siê w wiêkszo¶ci innych Uniksów. Domy¶ln± akcj± dla tego sygna³u jest zazwyczaj przerwanie procesu ze zrzutem pamiêci.

SIGPWR (nie wymieniony w POSIX 1003.1-2001) jest zazwyczaj domy¶lnie ignorowany w tych Uniksach, w których wystêpuje.

SIGIO (nie wymieniony w POSIX 1003.1-2001) jest domy¶lnie ignorowanyw niektórych innych Uniksach.

Sygna³y czasu rzeczywistego

Linux wspiera sygna³y czasu rzeczywistego zdefiniowane pierwotnie w rozszerzeniu dla czasu rzeczywistego POSIX.4 (a obecnie zawarte w POSIX 1003.1-2001). Linux wspiera 32 sygna³y czasu rzeczywistego, o numerach od (SIGRTMIN) do 63 (SIGRTMAX). (Programy powinny zawsze odwo³ywaæ siê do sygna³ów czasu rzeczywistego u¿ywaj±c notacji SIGRTMIN+n, gdy¿ zakres numerów sygna³ów czasu rzeczywistego ró¿ni siê pomiêdzy Uniksami.)

W odró¿nieniu od sygna³ów standardowych, sygna³y czasu rzeczywistego nie posiadaj± predefiniowanego znaczenia: mo¿na wykorzystywaæ ca³y zestaw sygna³ów czasu rzeczywistego do celów okre¶lonych w aplikacji. (Nale¿y jednak zauwa¿yæ, ¿e implementacja LinuxThreads korzysta z trzech pierwszych sygna³ów czasu rzeczywistego.)

Domy¶l± akcj± na nieobs³u¿ony sygna³ czasu rzeczywistego jest przerwanie procesu, który go otrzyma³.

Sygna³y czasu rzeczywistego s± rozpoznawane w nastêpuj±cy sposób:

1.
Mo¿na kolejkowaæ wiele egzemplarzy sygna³u czasu rzeczywistego. Dla odró¿nienia, je¶li w czasie gdy standardowy sygna³ jest blokowany zostanie doêczonych wiele egzemplarzy tego sygna³u, tylko jeden egzemplarzy trafia do kolejki.
2.
Je¶li sygna³ wys³ano korzystaj±c z sigqueue(2), mo¿na wys³aæ wraz z tym sygna³em warto¶æ towarzysz±c± (ca³kowit± lub wska¼nik). Je¶li proces otrzymuj±cy ustanawia funkcjê obs³ugi dla tego sygna³u za pomoc± znacznika SA_SIGACTION funkcji sigaction(2), to otrzymuje towarzysz±c± mu dan± za po¶rednictwem pola si_value struktury siginfo_t przekazanej jako drugi argument funkcji obs³ugi. Ponadto, pola si_pid oraz si_uid tej struktury mog± s³u¿yæ do otrzymania PID oraz rzeczywistego ID u¿ytkownika procesu wusy³aj±cego sygna³.
3.
sygna³y czasu rzeczywistego s± dorêczane w zagwarantowanej kolejno¶ci. Sygna³y czasu rzeczywistego jednego rodzaju s± dorêczane w takiej kolejno¶ci, w jakiej zosta³y wys³ane. Je¶li do procesu zostan± wys³ane ró¿ne sygna³y czasu rzeczywistego, bêd± one dorêczone pocz±wszy od sygna³u o najni¿szym numerze. (Tzn., sygna³y o niskich numerach maj± najwy¿szy priorytet.)

POSIX nie okre¶la, które z sygna³ów powinny zostaæ dorêczone jako pierwsze w sytuacji, gdy obs³u¿enia wymagaj± zarówno sygna³y standardowe, jak i sygna³y czasu rzeczywistego. Linux, podobnie do innych implementacji, daje w tym przypadku pierwszeñstwo sygna³om standardowym.

Zgodnie z POSIX, implementacja powinna zazwalaæ na kolejkowanie do procesu co najmniej _POSIX_SIGQUEUE_MAX (32) sygna³ów czasu rzeczywistego. Jednak¿e, Linux zamiast okre¶laæ ogdaniczenie dla procesu, wymusza ograniczenie ogólnosystemowe liczby kolejkowanych do wszystkich procesów sygna³ów czasu rzeczywistego. Ograniczenie to mo¿bna zobaczyæ a tak¿e (przy odpowiednich uprawnieniach) zmieniæ za po¶rednictwem pliku /proc/sys/kernel/rtsig-max. Podobnie, za po¶rednictwem pliku /proc/sys/kernel/rtsig-nr mo¿na dowiedzieæ siê ile sygna³ów czasu rzeczywistego jest aktualnie w kolejce.

ZGODNE Z

POSIX.1

B£ÊDY

SIGIO i SIGLOST maj± tê sam± warto¶æ. Ten drugi jest zakomentowany w ¼ród³ach kernela, lecz proces tworzenia niektórych aplikacji wci±¿ zak³ada, ¿e sygna³ 29 to SIGLOST.

ZOBACZ TAK¯E

kill(1), kill(2), setitimer(2), sigaction(2), signal(2), sigprocmask(2), sigqueue(2)