signal

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



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/.



Linux 2.2                          2000-04-28                          SIGNAL(2)