sigaction

Autres langues

Langue: pl

Autres versions - même langue

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, SVR4

ZOBACZ TAK¯E

kill(1), kill(2), killpg(2), pause(2), raise(3), siginterrupt(3), signal(2), signal(7), sigsetops(3), sigvec(2)