Rechercher une page de manuel
sigaction
Langue: pl
Version: 24 Sierpnia 1995 (openSuse - 09/10/07)
Section: 2 (Appels système)
NAZWA
sigaction, sigprocmask, sigpending, sigsuspend - POSIX-owe funkcje obs³ugi sygna³ów.SK£ADNIA
#include <signal.h>int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
int sigpending(sigset_t *set);
int sigsuspend(const sigset_t *mask);
OPIS
Wywo³anie systemowe sigaction jest u¿ywane do zmieniania akcji, któr± obiera proces po odebraniu okre¶lonego sygna³u.signum okre¶la sygna³ i mo¿e byæ dowolnym prawid³owym sygna³em poza SIGKILL i SIGSTOP.
Je¶li act jest niezerowe, to nowa akcja dla sygna³u signum jest brana z act. Je¶li oldact te¿ jest niezerowe, to poprzednia akcja jest w nim zachowywana.
Struktura sigaction jest zdefiniowana jako
-
struct sigaction { void (*sa_handler)(int); sigset_t sa_mask; int sa_flags; void (*sa_restorer)(void); }
sa_handler podaje akcjê, zwi±zan± z sygna³em signum i mo¿e to byæ m.in SIG_DFL dla akcji domy¶lnej, SIG_IGN dla akcji ignorowania, lub wska¼nik do funkcji obs³uguj±cej sygna³.
sa_mask podaje maskê sygna³ów, które powinny byæ blokowane podczas wywo³ywania handlera sygna³ów. Dodatkowo, sygna³, który wywo³a³ handler bêdzie zablokowany, chyba ¿e u¿yto flag SA_NODEFER lub SA_NOMASK.
sa_flags podaje zbiór flag, które modyfikuj± zachowanie procesu obs³ugi sygna³ów. Jest to zbiór warto¶ci po³±czonych bitowym OR:
-
- SA_NOCLDSTOP
- Je¶li signum to SIGCHLD, nie odbieraj powiadomienia o zatrzymaniu procesu potomnego (np. gdy proces potomny otrzyma jeden z SIGSTOP, SIGTSTP, SIGTTIN lub SIGTTOU).
- SA_ONESHOT or SA_RESETHAND
- Odtórz akcjê sygna³ow± do stanu domy¶lnego po wywo³aniu handlera sygna³ów. (Jest to domy¶lne zachowanie dla wywo³ania signal(2).)
- SA_RESTART
- Daj zachowanie, kompatybilne z semantyk± sygna³ow± BSD, czyni±c pewne wywo³ania systemowe odtwarzalnymi przez sygna³y.
- SA_NOMASK or SA_NODEFER
- Nie chroñ sygna³ów od bycia odebranymi z ich w³asnego handlera.
Element sa_restorer jest przedawniony i nie powinno siê go u¿ywaæ.
Wywo³anie sigprocmask jest u¿ywane do zmieniania listy obecnie blokowanych sygna³ów. Zachowanie tego wywo³ania jest zale¿ne od warto¶ci how, w sposó nastêpuj±cy
-
- SIG_BLOCK
- Zestaw blokowanych sygna³ów jest uni± bie¿±cego zbioru i argumentu set.
- SIG_UNBLOCK
- Sygna³y w set s± usuwane z bie¿±cego zestawu sygna³ów blokowanych. Legalnym jest próbowanie odblokiwania nieblokowanych sygna³ów.
- SIG_SETMASK
- Zestaw blokowanych sygna³ów jest ustawiany na argument set.
Je¶li oldset jest niezerowy, to poprzednia warto¶æ maski sygna³u jest w nim zachowywana.
Wywo³anie sigpending umo¿liwia testowanie zalegaj±cych sygna³ów (tych, które zosta³y podniesione w momencie blokowania). Maska sygna³owa dla zalegaj±cych sygna³ów jest zachowana w set.
Wywo³anie sigsuspend tymczasowo podmienia maskê sygna³ow± procesu na t±, przekazan± jako mask i zawiesza proces a¿ do otrzymania sygna³u.
WARTO¦Æ ZWRACANA
sigaction, sigprocmask, sigpending i sigsuspend zwracaj± 0 po sukcesie i -1 po b³êdzie.B£ÊDY
- EINVAL
- Podano nieprawid³owy sygna³. Bêdzie to te¿ generowane dla sygna³ów SIGKILL lub SIGSTOP.
- EFAULT
- act, oldact, set lub oldset wskazuj± na pamiêc poza przestrzeni± adresow±.
- EINTR
- Wywo³anie systemowe zosta³o przerwane.
UWAGI
Nie mo¿na zablokowaæ sygna³ów SIGKILL lub SIGSTOP . Próby takie zostan± zignorowane.Zgodnie z POSIX, zachowanie procesu po po zignorowaniu SIGFPE, SIGILL i SIGSEGV, niegenerowanych przez kill() lub raise() jest niezdefiniowane. Dzielenie liczby ca³kowitej przez zero ma wynik niezdefiniowany. Na niektórych architekturach generuje sygna³ SIGFPE. Ignorowanie go mo¿e prowadziæ do nieskoñczonej pêtli.
Ustawienie SIGCHLD na SIG_IGN daje automatyczne zbieranie plonów procesów potomnych.
Specyfikacja POSIX definiuje tylko SA_NOCLDSTOP. U¿ycie innych flag jest nieprzeno¶ne.
Flaga SA_RESETHAND jest kompatybilna z podobn± flag± z SVr4.
Flaga SA_NODEFER jest kompatybilna z podobn± flag± z SVr4 dla j±der Linuksa 1.3.9 i nowszych.
Nazwy SA_RESETHAND i SA_NODEFER s± kompatybilne z SVr4 i s± dostêpne tylko w wersjach bibliotek wiêkszych lub równych 3.0.9.
sigaction mo¿e byæ wywo³ywany z drugim argumentem o warto¶ci null, powoduj±c w ten sposób zapytanie bie¿±cego handlera sygna³u. Mo¿e go te¿ u¿yæ do sprawdzenia, czy dany sygna³ jest prawid³owy na obecnej maszynie. W tym celu nale¿y daæ zerowy zarówno drugi, jak i trzeci argument.
Zobacz sigsetops(3) dla szczegó³ów o operacjach na zbiorach sygna³ów.
ZGODNE Z
POSIX, SVR4ZOBACZ TAK¯E
kill(1), kill(2), killpg(2), pause(2), raise(3), siginterrupt(3), signal(2), signal(7), sigsetops(3), sigvec(2)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre