Provided by: manpages-pl-dev_0.6-2_all bug

NAZWA

       signal - obsługa sygnałów ANSI C

SKŁADNIA

       #include <signal.h>

       typedef void (*sighandler_t)(int);

       sighandler_t signal(int signum, sighandler_t handler);

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       Funkcja  systemowa signal() instaluje nową obsługę sygnału dla sygnału o numerze signum.  Obsługa sygnału
       ustawiana jest na sighandler, który może być funkcją podaną przez użytkownika lub SIG_IGN albo SIG_DFL.

       Po przysłaniu sygnału o numerze signum dzieje się, co następuje.   Jeśli  obsługa  odpowiedniego  sygnału
       została  ustawiona na SIG_IGN, to sygnał jest ignorowany.  Jeśli obsługa została ustawiona na SIG_DFL, to
       podejmowana jest domyślna akcja skojarzona z sygnałem (patrz signal(7)).  Ostatecznie, Jeśli jako obsługa
       sygnału  została  ustawiona  function  sighandler,  to  najpierw  albo obsługa sygnału jest inicjowana na
       SIG_DFL albo odbywa się zależne od implementacji blokowanie sygnału, a następnie wywoływana jest  funkcja
       sighandler z argumentem signum.

       Używanie funkcji obsługi sygnału jest nazywane "przechwytywaniem sygnału".  Sygnały SIGKILL i SIGSTOP nie
       mogą być ani przechwycone, ani zignorowane.

WARTOŚĆ ZWRACANA

       Funkcja signal() zwraca poprzednią wartość obsługi sygnału, lub SIG_ERR w przypadku błędu.

PRZENOŚNOŚĆ

       Oryginalne uniksowe signal() zainicjalizowałoby obsługę sygnału na SIG_DFL i to samo robi System V  (oraz
       jądro  Linuksa  i  libc4,5).  Z  drugiej  strony,  BSD  nie  inicjalizuje  obsługi  sygnału,  ale blokuje
       nowopojawiające się egzemplarze tego sygnału  podczas  wywoływania  funkcji  obsługi.  Biblioteka  glibc2
       naśladuje zachowanie BSD.

       Jeśli  w systemie opartym o libc5 zostanie włączone <bsd/signal.h> zamiast <signal.h>, to signal zostanie
       przedefiniowane jako __bsd_signal i będzie miało semantykę BSD. Nie jest to zalecane.

       Jeśli w systemie opartym o glibc2 zdefiniowane zostanie makro testowania cechy, takie  jak  _XOPEN_SOURCE
       lub zostanie użyta osobna funkcja sysv_signal, otrzyma się zachowanie klasyczne. Nie jest to zalecane.

       Próba  zmiany semantyki tej funkcji za pomocą przedefiniowywania i włączania plików nagłówkowych nie jest
       dobrym pomysłem. Lepiej w ogóle unikać funkcji signal i posługiwać się zamiast niej sigaction(2).

UWAGI

       Zgodnie ze standardem POSIX, zachowanie procesu po zignorowaniu sygnału SIGFPE, SIGILL lub SIGSEGV, który
       nie  był  wygenerowany  przez  funkcję  kill(2) ani raise(3), jest niezdefiniowane.  Dzielenie przez zero
       liczby całkowitej nie ma określonego wyniku. Na niektórych  architekturach  generuje  to  sygnał  SIGFPE.
       (Również   dzielenie  najmniejszej  liczby  ujemnej  przez  -1  może  spowodować  wygenerowanie  SIGFPE.)
       Ignorowanie tego sygnału może doprowadzić do pętli nieskończonej.

       Zgodnie ze standardem POSIX (3.3.1.3) nie jest określone, co sie stanie gdy SIGCHLD zostanie ustawiony na
       SIG_IGN.   W  tym  miejscu  zachowanie  BSD  i  SYSV  różni  się,  powodując  nie  działanie  na Linuksie
       oprogramowania BSD, które ustawia akcję dla SIGCHLD na SIG_IGN.

       Użycie sighandler_t jest rozszerzeniem GNU.  Różne wersje  libc  predefiniują  ten  typ;  libc4  i  libc5
       definiują   SignalHandler,   glibc   definiuje  sig_t,  a  gdy  zdefiniowane  jest  _GNU_SOURCE,  również
       sighandler_t.

ZGODNE Z

       ANSI C

ZOBACZ TAKŻE

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

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
       W razie zauważenia różnic między powyższym opisem a rzeczywistym  zachowaniem  opisywanego  programu  lub
       funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 2 signal

       Prosimy   o   pomoc   w   aktualizacji   stron   man  -  więcej  informacji  można  znaleźć  pod  adresem
       http://sourceforge.net/projects/manpages-pl/.