.\" -*- coding: UTF-8 -*- .\" Copyright 2000, Andries E. Brouwer .\" Copyright 2007, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH signal 2 "8 lutego 2026 r." "Linux man\-pages 6.18" .SH NAZWA signal \- obsługa sygnałów ANSI C .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP,\ \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBtypedef typeof(void (int)) *sighandler_t;\fP .P \fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIhandler\fP\fB);\fP .fi .SH OPIS \fBOSTRZEŻENIE\fP: zachowanie \fBsignal\fP() różni się pomiędzy wersjami Uniksa i różniło się również historycznie, pomiędzy różnymi wersjami Linuksa. \fBProszę go unikać\fP: należy korzystać z \fBsigaction\fP(2). Zob. \fIPrzenośność\fP poniżej. .P \fBsignal\fP() ustawia dyspozycję sygnału \fIsignum\fP na \fIhandler\fP, które wynosi \fBSIG_IGN\fP, \fBSIG_DFL\fP lub jest adresem funkcji zdefiniowanej przez programistę (\[Bq]procedura obsługi sygnału\[rq]). .P Jeśli sygnał \fIsignum\fP jest dostarczany do procesu, to dzieje się jedna z następujących rzeczy: .TP 3 * Jeśli dyspozycję ustawiono na \fBSIG_IGN\fP, to sygnał jest ignorowany. .TP * Jeśli dyspozycję ustawiono na \fBSIG_DFL\fP, to zachodzi domyślna akcja przypisana sygnałowi (zob. \fBsignal\fP(7)). .TP * Jeśli dyspozycja jest ustawiona na funkcję, to na początku dyspozycja jest resetowana na \fBSIG_DFL\fP, albo sygnał jest blokowany (zob. \fIPrzenośność\fP poniżej), a następnie wywoływany jest \fIhandler\fP z argumentem \fIsignum\fP. Jeśli przywołanie procedury obsługi sygnału powoduje zablokowanie sygnału, to sygnał jest odblokowywany po powrocie z procedury obsługi. .P Sygnały \fBSIGKILL\fP i \fBSIGSTOP\fP nie mogą być ani przechwycone, ani zignorowane. .SH "WARTOŚĆ ZWRACANA" \fBsignal\fP() zwraca poprzednią wartość procedury obsługi sygnału. W przypadku błędu zwraca \fBSIG_ERR\fP i ustawia \fIerrno\fP wskazując błąd. .SH BŁĘDY .TP \fBEINVAL\fP \fIsignum\fP jest nieprawidłowy. .SH WERSJE .\" libc4 and libc5 define .\" .IR SignalHandler ; Użycie \fIsighandler_t\fP jest rozszerzeniem GNU, które jest ujawnione, jeśli zdefiniowano \fB_GNU_SOURCE\fP; glibc definiuje również (pochodzące z BSD) \fIsig_t\fP, jeśli zdefiniowano \fB_BSD_SOURCE\fP (glibc 2.19 i wcześniejsze) lub \fB_DEFAULT_SOURCE\fP (glibc 2.19 i późniejsze). Standardowa definicja \fBsignal\fP() wygląda tak: .P .in +4n .EX \fBtypeof(void (int)) *signal(int \fP\fIsignum\fP\fB, typeof(void (int)) *\fP\fIhandler\fP\fB);\fP .EE .in .SS Przenośność Jedynym przenośnym użyciem \fBsignal\fP() jest ustawienie dyspozycji sygnału na \fBSIG_DFL\fP lub \fBSIG_IGN\fP. Semantyka korzystania z \fBsignal\fP() do ustanowienia procedury obsługi sygnału różni się między systemami (i POSIX.1 wyraźnie zezwala na to zróżnicowanie); \fBproszę nie używać go do tego celu\fP. .P Norma POSIX.1 rozwiązała ten chaos związany z przenośnością, przez ustanowienie \fBsigaction\fP(2), który zapewnia wyraźną kontrolę semantyki, gdy przywoływana jest procedura obsługi sygnału; dlatego należy korzystać z tego interfejsu, zamiast z \fBsignal\fP(). .SH STANDARDY C11, POSIX.1\-2024. .SH HISTORIA C89, POSIX.1\-2001. .P W oryginalnych systemach UNIX, gdy przywołano obsługę sygnału, którą ustanowiono za pomocą \fBsignal\fP(), dyspozycja sygnału była resetowana na \fBSIG_DFL\fP, a system nie blokował dostarczania kolejnych wystąpień sygnału. Jest to równoważne wywołaniu \fBsigaction\fP(2) z następującymi znacznikami: .P .in +4n .EX sa.sa_flags = SA_RESETHAND | SA_NODEFER; .EE .in .P System\ V również udostępnia te semantyki \fBsignal\fP(). Nie było to dobre rozwiązanie, ponieważ sygnał mógł być dostarczony ponownie, przed tym, jak procedura obsługi sygnału zdążyła się ponownie zestawić. Co więcej, szybkie wysyłanie tego samego sygnału, mogło skutkować rekurencyjnemu przywoływaniu procedury obsługi. .P BSD poprawiło sytuację, lecz przy okazji zmieniło niestety również semantykę interfejsu \fBsignal\fP(). W BSD, gdy przywoływana jest procedura obsługi sygnału, dyspozycja sygnału nie jest resetowana, a kolejne dostarczanie kolejnych wystąpień sygnału jest blokowane podczas wykonywania procedury obsługi. Co więcej, niektóre blokujące wywołania systemowe są automatycznie restartowane, jeśli zostaną przerwane przez procedurę obsługi sygnału (zob. \fBsignal\fP(7)). Semantyka BSD jest równoważna wywołaniu \fBsigaction\fP(2) z następującymi znacznikami: .P .in +4n .EX sa.sa_flags = SA_RESTART; .EE .in .P Sytuacja w Linuksie wygląda następująco: .IP \[bu] 3 Wywołanie systemowe \fBsignal\fP() jądra udostępnia semantykę Systemu\ V. .IP \[bu] .\" .\" System V semantics are also provided if one uses the separate .\" .BR sysv_signal (3) .\" function. .\" .IP \[bu] .\" The .\" .BR signal () .\" function in Linux libc4 and libc5 provide System\ V semantics. .\" If one on a libc5 system includes .\" .I .\" instead of .\" .IR , .\" then .\" .BR signal () .\" provides BSD semantics. Domyślnie, w glibc 2 i późniejszych, funkcja opakowująca \fBsignal\fP() nie przywołuje wywołania systemowego jądra. Zamiast tego wywołuje \fBsigaction\fP(2) ze znacznikami zapewniającymi semantykę BSD. To domyślne zachowanie jest udostępniane, jeśli zdefiniowano odpowiednie makro: \fB_BSD_SOURCE\fP w glibc 2.19 i wcześniejszych lub \fB_DEFAULT_SOURCE\fP w glibc 2.19 i późniejszych (domyślnie makra te są zdefiniowanie, więcej szczegółów w podręczniku \fBfeature_test_macros\fP(7)). Jeśli odpowiednie makro nie jest zdefiniowane, to \fBsignal\fP() zapewnia semantykę Systemu\ V. .SH UWAGI Wpływ \fBsignal\fP() na procesy wielowątkowe jest niezdefiniowany. .P Zgodnie z POSIX, zachowanie procesu po zignorowaniu sygnału \fBSIGFPE\fP, \fBSIGILL\fP lub \fBSIGSEGV\fP, niewygenerowanego przez \fBkill\fP(2) lub \fBraise\fP(3), jest niezdefiniowane. Dzielenie liczby całkowitej przez zero ma wynik niezdefiniowany. Na niektórych architekturach generuje sygnał \fBSIGFPE\fP (także dzielenie najmniejszej ujemnej liczby całkowitej przez \-1 może wygenerować \fBSIGFPE\fP). Ignorowanie go może prowadzić do nieskończonej pętli. .P W podręczniku \fBsigaction\fP(2) opisano szczegóły tego, co dzieje się gdy dyspozycję \fBSIGCHLD\fP ustawiono na \fBSIG_IGN\fP. .P Podręcznik \fBsignal\-safety\fP(7) zawiera listę funkcji async\-signal\-safe, które można bezpiecznie wywołać z procedury obsługi sygnału. .SH "ZOBACZ TAKŻE" \fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBkillpg\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3), \fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3), \fBsignal\fP(7) .PP .SH TŁUMACZENIE Tłumaczenie niniejszej strony podręcznika: Przemek Borys , Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .