sigpending

SIGACTION(2)             Podręcznik programisty Linuksa             SIGACTION(2)



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)




Linux 1.3                       24 Sierpnia 1995                    SIGACTION(2)