Provided by: manpages-pl-dev_20051117-1_all bug

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)