Rechercher une page de manuel
signal
Langue: pl
Version: 2002-06-13 (openSuse - 09/10/07)
Section: 7 (Divers)
NAZWA
signal - lista dostêpnych sygna³ówOPIS
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.1B£Ê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)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre