Provided by:
manpages-pl-dev_20051117-1_all 
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)