Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
signal - obsluga sygnalow ANSI C
SK/LADNIA
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
OPIS
Funkcja systemowa signal() instaluje now obslug sygnalu dla sygnalu o
numerze signum. Obsluga sygnalu ustawiana jest na sighandler, ktory
moe by funkcj podan przez uytkownika lub SIG_IGN albo SIG_DFL.
Po przyslaniu sygnalu o numerze signum dzieje si, co nastpuje. Jeli
obsluga odpowiedniego sygnalu zostala ustawiona na SIG_IGN, to sygnal
jest ignorowany. Jeli obsluga zostala ustawiona na SIG_DFL, to
podejmowana jest domylna akcja skojarzona z sygnalem (patrz signal(7)).
Ostatecznie, Jeli jako obsluga sygnalu zostala ustawiona function
sighandler, to najpierw albo obsluga sygnalu jest inicjowana na SIG_DFL
albo odbywa si zalene od implementacji blokowanie sygnalu, a nastpnie
wywolywana jest funkcja sighandler z argumentem signum.
Uywanie funkcji obslugi sygnalu jest nazywane "przechwytywaniem
sygnalu". Sygnaly SIGKILL i SIGSTOP nie mog by ani przechwycone, ani
zignorowane.
WARTO ZWRACANA
Funkcja signal() zwraca poprzedni warto obslugi sygnalu, lub SIG_ERR w
przypadku bldu.
PRZENONO
Oryginalne uniksowe signal() zainicjalizowaloby obslug sygnalu na
SIG_DFL i to samo robi System V (oraz jdro Linuksa i libc4,5). Z
drugiej strony, BSD nie inicjalizuje obslugi sygnalu, ale blokuje
nowopojawiajce si egzemplarze tego sygnalu podczas wywolywania funkcji
obslugi. Biblioteka glibc2 naladuje zachowanie BSD.
Jeli w systemie opartym o libc5 zostanie wlczone <bsd/signal.h> zamiast
<signal.h>, to signal zostanie przedefiniowane jako __bsd_signal i
bdzie mialo semantyk BSD. Nie jest to zalecane.
Jeli w systemie opartym o glibc2 zdefiniowane zostanie makro testowania
cechy, takie jak _XOPEN_SOURCE lub zostanie uyta osobna funkcja
sysv_signal, otrzyma si zachowanie klasyczne. Nie jest to zalecane.
Proba zmiany semantyki tej funkcji za pomoc przedefiniowywania i
wlczania plikow naglowkowych nie jest dobrym pomyslem. Lepiej w ogole
unika funkcji signal i poslugiwa si zamiast niej sigaction(2).
UWAGI
Zgodnie ze standardem POSIX, zachowanie procesu po zignorowaniu sygnalu
SIGFPE, SIGILL lub SIGSEGV, ktory nie byl wygenerowany przez funkcj
kill(2) ani raise(3), jest niezdefiniowane. Dzielenie przez zero
liczby calkowitej nie ma okrelonego wyniku. Na niektorych
architekturach generuje to sygnal SIGFPE. (Rownie dzielenie
najmniejszej liczby ujemnej przez -1 moe spowodowa wygenerowanie
SIGFPE.) Ignorowanie tego sygnalu moe doprowadzi do ptli nieskoczonej.
Zgodnie ze standardem POSIX (3.3.1.3) nie jest okrelone, co sie stanie
gdy SIGCHLD zostanie ustawiony na SIG_IGN. W tym miejscu zachowanie
BSD i SYSV roni si, powodujc nie dzialanie na Linuksie oprogramowania
BSD, ktore ustawia akcj dla SIGCHLD na SIG_IGN.
Uycie sighandler_t jest rozszerzeniem GNU. Rone wersje libc
predefiniuj ten typ; libc4 i libc5 definiuj SignalHandler, glibc
definiuje sig_t, a gdy zdefiniowane jest _GNU_SOURCE, rownie
sighandler_t.
ZGODNE Z
ANSI C
ZOBACZ TAKE
kill(1), kill(2), killpg(2), pause(2), raise(3), sigaction(2),
signal(7), sigsetops(3), sigvec(2), alarm(2)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.