.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 1994,1995 Mike Battersby <mib@deakin.edu.au>
.\" and Copyright 2004, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
.\" based on work by faith@cs.unc.edu
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified, aeb, 960424
.\" Modified Fri Jan 31 17:31:20 1997 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Thu Nov 26 02:12:45 1998 by aeb - add SIGCHLD stuff.
.\" Modified Sat May  8 17:40:19 1999 by Matthew Wilcox
.\"	add POSIX.1b signals
.\" Modified Sat Dec 29 01:44:52 2001 by Evan Jones <ejones@uwaterloo.ca>
.\"	SA_ONSTACK
.\" Modified 2004-11-11 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"	Added mention of SIGCONT under SA_NOCLDSTOP
.\"	Added SA_NOCLDWAIT
.\" Modified 2004-11-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"	Updated discussion for POSIX.1-2001 and SIGCHLD and sa_flags.
.\"	Formatting fixes
.\" 2004-12-09, mtk, added SI_TKILL + other minor changes
.\" 2005-09-15, mtk, split sigpending(), sigprocmask(), sigsuspend()
.\"	out of this page into separate pages.
.\" 2010-06-11 Andi Kleen, add hwpoison signal extensions
.\" 2010-06-11 mtk, improvements to discussion of various siginfo_t fields.
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
.\"	Added notes on ptrace SIGTRAP and SYS_SECCOMP.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH sigaction 2 "10 lutego 2023 r." "Linux man\-pages 6.03" 
.SH NAZWA
sigaction, rt_sigaction \- bada i zmienia akcję sygnału
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <signal.h>\fP
.PP
\fBint sigaction(int \fP\fIsignum\fP\fB,\fP
\fB              const struct sigaction *_Nullable restrict \fP\fIact\fP\fB,\fP
\fB              struct sigaction *_Nullable restrict \fP\fIoldact\fP\fB);\fP
.fi
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
\fBsigaction\fP():
.nf
    _POSIX_C_SOURCE
.fi
.PP
\fIsiginfo_t\fP:
.nf
    _POSIX_C_SOURCE >= 199309L
.fi
.SH OPIS
Wywołanie systemowe \fBsigaction\fP() jest używane do zmieniania akcji, którą
odbiera proces po odebraniu określonego sygnału. (Wprowadzenie do sygnałów
można znaleźć  w podręczniku \fBsignals\fP(7)).
.PP
\fIsignum\fP określa sygnał i może być dowolnym prawidłowym sygnałem poza
\fBSIGKILL\fP i \fBSIGSTOP\fP.
.PP
Jeśli \fIact\fP nie jest NULL\-em, to nowa akcja dla sygnału \fIsignum\fP jest
brana z \fIact\fP. Jeśli \fIoldact\fP też jest różny od NULL, to poprzednia akcja
jest w nim zachowywana.
.PP
Struktura \fIsigaction\fP jest zdefiniowana jako:
.PP
.in +4n
.EX
struct sigaction {
    void     (*sa_handler)(int);
    void     (*sa_sigaction)(int, siginfo_t *, void *);
    sigset_t   sa_mask;
    int        sa_flags;
    void     (*sa_restorer)(void);
};
.EE
.in
.PP
Na niektórych architekturach część tej struktury może być unią: nie należy
ustawiać jednocześnie pól \fIsa_handler\fP oraz \fIsa_sigaction\fP.
.PP
Pole \fIsa_restorer\fP nie jest przeznaczone do bezpośredniego stosowania
(POSIX nie określa pola \fIsa_restorer\fP). Więcej informacji o przeznaczeniu
tego pola można znaleźć w podręczniku \fBsigreturn\fP(2).
.PP
\fIsa_handler\fP specifies the action to be associated with \fIsignum\fP and can
be one of the following:
.IP \[bu] 3
\fBSIG_DFL\fP for the default action.
.IP \[bu]
\fBSIG_IGN\fP to ignore this signal.
.IP \[bu]
A pointer to a signal handling function.  This function receives the signal
number as its only argument.
.PP
If \fBSA_SIGINFO\fP is specified in \fIsa_flags\fP, then \fIsa_sigaction\fP (instead
of \fIsa_handler\fP)  specifies the signal\-handling function for \fIsignum\fP.
This function receives three arguments, as described below.
.PP
\fIsa_mask\fP określa maskę sygnałów, które powinny być blokowane (tj. dodane
do maski sygnałów wątku, z którego sygnał został wywołany) podczas
wywoływania funkcji obsługi sygnałów. Dodatkowo, sygnał, który wywołał tę
funkcję obsługi  będzie zablokowany, chyba że użyto flagi \fBSA_NODEFER\fP.
.PP
\fIsa_flags\fP podaje zbiór flag, które modyfikują zachowanie procesu obsługi
sygnałów.  Jest to zbiór wartości połączonych bitowym OR:
.TP 
\fBSA_NOCLDSTOP\fP
Jeśli \fIsignum\fP jest równe \fBSIGCHLD\fP, to nie są odbierane powiadomienia o
zatrzymaniu procesu\-dziecka (np. gdy dziecko otrzyma jeden z \fBSIGSTOP\fP,
\fBSIGTSTP\fP, \fBSIGTTIN\fP lub \fBSIGTTOU\fP) ani o jego wznowieniu (np. po
otrzymaniu \fBSIGCONT\fP) (patrz \fBwait\fP(2)). Flaga ta ma znaczenie tylko w
przypadku ustawiania funkcji obsługi sygnału \fBSIGCHLD\fP.
.TP 
\fBSA_NOCLDWAIT\fP (od Linuksa 2.6)
.\" To be precise: Linux 2.5.60 -- MTK
Jeśli \fIsignum\fP jest równy \fBSIGCHLD\fP, to dzieci po swoim zakończeniu nie
zostaną przekształcone w zombie. Patrz także \fBwaitpid\fP(2). Znacznik ma
znaczenie tylko ustanawiania funkcji obsługującej sygnał \fBSIGCHLD\fP lub
podczas ustawiania tego sygnału na \fBSIG_DLF\fP.
.IP
Jeśli znacznik \fBSA_NOCLDWAIT\fP jest ustawiony podczas ustanawiania funkcji
obsługującej sygnał \fBSIGCHLD\fP, to POSIX.1 nie określa, czy sygnał
\fBSIGCHLD\fP po zakończeniu procesu potomnego. Pod Linuksem sygnał \fBSIGCHLD\fP
jest w takim przypadku generowany; niektóre inne systemy go nie  generują.
.TP 
\fBSA_NODEFER\fP
Do not add the signal to the thread's signal mask while the handler is
executing, unless the signal is specified in \fIact.sa_mask\fP.  Consequently,
a further instance of the signal may be delivered to the thread while it is
executing the handler.  This flag is meaningful only when establishing a
signal handler.
.IP
\fBSA_NOMASK\fP is an obsolete, nonstandard synonym for this flag.
.TP 
\fBSA_ONSTACK\fP
Wywołuje funkcję obsługi sygnału, używając alternatywnego stosu ustawionego
przez \fBsigaltstack\fP(2). Jeżeli ten alternatywny stos nie jest dostępny,
zostanie użyty stos domyślny. Flaga ta ma znaczenie tylko w przypadku
ustanawiania funkcji obsługi sygnału.
.TP 
\fBSA_RESETHAND\fP
Odtwarza akcję sygnałową do stanu domyślnego po wejściu funkcji obsługi
sygnału. Flaga ta ma znaczenie tylko w przypadku ustanawiania funkcji
obsługi sygnału.
.IP
\fBSA_ONESHOT\fP is an obsolete, nonstandard synonym for this flag.
.TP 
\fBSA_RESTART\fP
Dostarcza zachowania kompatybilnego z semantyką sygnałową BSD, czyniąc pewne
wywołania systemowe odtwarzalnymi przez sygnały. Flaga ta ma znaczenie
podczas ustanawiania procedury obsługi sygnału. Informacje na temat
odtwarzania wywołań systemowych można znaleźć w podręczniku \fBsignal\fP(7).
.TP 
\fBSA_RESTORER\fP
\fINie jest przeznaczone do bezpośredniego stosowania\fP. Flaga ta jest używana
przez biblioteki C do wskazania, że pole \fIsa_restorer\fP zawiera adres
"trampoliny sygnału" Więcej szczegółów w podręczniku \fBsigreturn\fP(2).
.TP 
\fBSA_SIGINFO\fP (od Linuksa 2.2)
.\" (The
.\" .I sa_sigaction
.\" field was added in Linux 2.1.86.)
.\"
Funkcja obsługi sygnałów pobiera trzy argumenty, a nie jeden. W typ
przypadku zamiast ustawiać \fIsa_handler\fP należy ustawić
\fIsa_sigaction\fP. Flaga ta ma znaczenie tylko w przypadku ustanawiania
funkcji obsługi sygnału.
.TP 
\fBSA_UNSUPPORTED\fP (od Linuksa 5.11)
Used to dynamically probe for flag bit support.
.IP
If an attempt to register a handler succeeds with this flag set in
\fIact\->sa_flags\fP alongside other flags that are potentially unsupported
by the kernel, and an immediately subsequent \fBsigaction\fP()  call specifying
the same signal number and with a non\-NULL \fIoldact\fP argument yields
\fBSA_UNSUPPORTED\fP \fIclear\fP in \fIoldact\->sa_flags\fP, then
\fIoldact\->sa_flags\fP may be used as a bitmask describing which of the
potentially unsupported flags are, in fact, supported.  See the section
"Dynamically probing for flag bit support" below for more details.
.TP 
\fBSA_EXPOSE_TAGBITS\fP (od Linuksa 5.11)
Normally, when delivering a signal, an architecture\-specific set of tag bits
are cleared from the \fIsi_addr\fP field of \fIsiginfo_t\fP.  If this flag is set,
an architecture\-specific subset of the tag bits will be preserved in
\fIsi_addr\fP.
.IP
Programs that need to be compatible with Linux versions older than 5.11 must
use \fBSA_UNSUPPORTED\fP to probe for support.
.SS "The siginfo_t argument to a SA_SIGINFO handler"
When the \fBSA_SIGINFO\fP flag is specified in \fIact.sa_flags\fP, the signal
handler address is passed via the \fIact.sa_sigaction\fP field.  This handler
takes three arguments, as follows:
.PP
.in +4n
.EX
void
handler(int sig, siginfo_t *info, void *ucontext)
{
    ...
}
.EE
.in
.PP
These three arguments are as follows
.TP 
\fIsig\fP
The number of the signal that caused invocation of the handler.
.TP 
\fIinfo\fP
A pointer to a \fIsiginfo_t\fP, which is a structure containing further
information about the signal, as described below.
.TP 
\fIucontext\fP
This is a pointer to a \fIucontext_t\fP structure, cast to \fIvoid\ *\fP.  The
structure pointed to by this field contains signal context information that
was saved on the user\-space stack by the kernel; for details, see
\fBsigreturn\fP(2).  Further information about the \fIucontext_t\fP structure can
be found in \fBgetcontext\fP(3)  and \fBsignal\fP(7).  Commonly, the handler
function doesn't make any use of the third argument.
.PP
The \fIsiginfo_t\fP data type is a structure with the following fields:
.PP
.in +4n
.EX
.\" FIXME
.\" The siginfo_t 'si_trapno' field seems to be used
.\" only on SPARC and Alpha; this page could use
.\" a little more detail on its purpose there.
.\" In the kernel: si_tid
siginfo_t {
    int      si_signo;    /* Numer sygnału */
    int      si_errno;    /* Wartość zmiennej errno */
    int      si_code;     /* Kod sygnału */
    int      si_trapno;   /* Numer pułapki, które spowodowała
                             sprzętowe wygenerowanie sygnału
                             (nieużywane na większości architektur) */
    pid_t    si_pid;      /* ID procesu wysyłającego */
    uid_t    si_uid;      /* Rzeczywiste ID użytk. procesu wysyłającego */
    int      si_status;   /* Kod lub sygnał zakończenia */
    clock_t  si_utime;    /* Czas zużyty w przestrzeni użytkownika */
    clock_t  si_stime;    /* Czas zużyty przez system operacyjny */
    union sigval si_value;  /* Wartość sygnału */
    int      si_int;      /* Sygnał POSIX.1b */
    void    *si_ptr;      /* Sygnał POSIX.1b */
    int      si_overrun;  /* Licznik przekr. timerów; timery POSIX.1b */
    int      si_timerid;  /* ID timera; timery POSIX.1b */
    void    *si_addr;     /* Adres pamięci powodujący błąd */
    long     si_band;     /* Grupa zdarzenia (był \fIint\fP w
                             glibc 2.3.2 i wcześniejszych) */
    int      si_fd;       /* Deskryptor pliku */
    short    si_addr_lsb; /* Mniej istotny bit adresu
                             (od Linuksa 2.6.32) */
    void    *si_lower;    /* Kres dolny przy wystąpieniu naruszenia
                             adresu (od Linuksa 3.19) */
    void    *si_upper;    /* Kres górny przy wystąpieniu naruszenia
                             adresu (od Linuksa 3.19) */
    int      si_pkey;     /* Klucz zabezpieczający na PTE będący powodem
                             błędu (od Linuksa 4.6) */
    void    *si_call_addr;/* Adres instrukcji wywołania systemowego
                             (od Linuksa 3.5) */
    int      si_syscall;  /* Liczba próbowanych wywołań systemowych
                             (od Linuksa 3.5) */
    unsigned int si_arch; /* Architektura próbowanego wywoł. systemowego
                             (od Linuksa 3.5) */
}
.EE
.in
.PP
\fIsi_signo\fP, \fIsi_errno\fP i \fIsi_code\fP są zdefiniowane dla wszystkich
sygnałów. (Generalnie \fIsi_errno\fP nie jest używane pod Linuksem). Pozostałe
pola struktury mogą być unią; powinno się odczytywać tylko pola istotne dla
danego sygnału.
.IP \[bu] 3
Sygnały wysłane przez \fBkill\fP(2) i \fBsigqueue\fP(3) mają wypełnione pola
\fIsi_pid\fP oraz \fIsi_uid\fP. Dodatkowo sygnały wysłane przez \fBsigqueue\fP(3)
mają w polach \fIsi_int\fP i \fIsi_ptr\fP ustawione wartości podane przez nadawcę
sygnału; szczegóły opisano w \fBsigqueue\fP(3).
.IP \[bu]
Sygnały wysłane przez timery POSIX.1b (od Linuksa 2.6) mają uzupełnione pola
\fIsi_overrun\fP i \fIsi_timerid\fP. Pole \fIsi_timerid\fP zawiera wewnętrzny
identyfikator używany przez jądro do identyfikacji timera; nie jest to ten
sam identyfikator, który zwraca \fBtimer_create\fP(2). Pole \fIsi_overrun\fP
zawiera informację o tym, ile razy timer się przepełnił \(em jest to ta sama
informacja, którą zwraca \fBtimer_getoverrun\fP(2). Pola te są niestandardowymi
rozszerzeniami Linuksa.
.IP \[bu]
Sygnały wysłane w celu notyfikacji kolejki komunikatów (patrz opis
\fBSIGEV_SIGNAL\fP in \fBmq_notify\fP(3)) mają pola \fIsi_int\fP/\fIsi_ptr\fP wypełnione
wartościami \fIsigev_value\fP przekazanymi do \fBmq_notify\fP(3); ponadto
\fIsi_pid\fP zawiera identyfikator procesu wysyłającego sygnał, a \fIsi_uid\fP
rzeczywisty identyfikator użytkownika \- nadawcy sygnału.
.IP \[bu]
.\" FIXME .
.\" When si_utime and si_stime where originally implemented, the
.\" measurement unit was HZ, which was the same as clock ticks
.\" (sysconf(_SC_CLK_TCK)).  In Linux 2.6, HZ became configurable, and
.\" was *still* used as the unit to return the info these fields,
.\" with the result that the field values depended on the
.\" configured HZ.  Of course, the should have been measured in
.\" USER_HZ instead, so that sysconf(_SC_CLK_TCK) could be used to
.\" convert to seconds.  I have a queued patch to fix this:
.\" http://thread.gmane.org/gmane.linux.kernel/698061/ .
.\" This patch made it into Linux 2.6.27.
.\" But note that these fields still don't return the times of
.\" waited-for children (as is done by getrusage() and times()
.\" and wait4()).  Solaris 8 does include child times.
\fBSIGCHLD\fP fills in \fIsi_pid\fP, \fIsi_uid\fP, \fIsi_status\fP, \fIsi_utime\fP, and
\fIsi_stime\fP, providing information about the child.  The \fIsi_pid\fP field is
the process ID of the child; \fIsi_uid\fP is the child's real user ID.  The
\fIsi_status\fP field contains the exit status of the child (if \fIsi_code\fP is
\fBCLD_EXITED\fP), or the signal number that caused the process to change
state.  The \fIsi_utime\fP and \fIsi_stime\fP contain the user and system CPU time
used by the child process; these fields do not include the times used by
waited\-for children (unlike \fBgetrusage\fP(2)  and \fBtimes\fP(2)).  Up to Linux
2.6, and since Linux 2.6.27, these fields report CPU time in units of
\fIsysconf(_SC_CLK_TCK)\fP.  In Linux 2.6 kernels before Linux 2.6.27, a bug
meant that these fields reported time in units of the (configurable) system
jiffy (see \fBtime\fP(7)).
.IP \[bu]
\fBSIGILL\fP, \fBSIGFPE\fP, \fBSIGSEGV\fP, \fBSIGBUS\fP oraz \fBSIGTRAP\fP wypełniają pole
\fIsi_addr\fP, ustawiając w nim adres błędu. Na niektórych architekturach
sygnały wypełniają także pole \fIsi_trapno\fP.
.IP
Niektóre błędy pochodne \fBSIGBUS\fP, w szczególności \fBBUS_MCEERR_AO\fP i
\fBBUS_MCEERR_AR\fP ustawiają także \fIsi_addr_lsb\fP. Pole to oznacza najmniej
znaczący bit adresu, zatem i rozmiary uszkodzeń. Na przykład jeśli cała
strona została uszkodzona,  \fIsi_addr_lsb\fP zawierać będzie
\fIlog2(sysconf(_SC_PAGESIZE))\fP. Gdy jako odpowiedź na zdarzenie \fBptrace\fP(2)
(PTRACE_EVENT_foo) zostanie dostarczony \fBSIGTRAP\fP, pole \fIsi_addr\fP nie jest
wypełnione, natomiast pola \fIsi_pid\fP i \fIsi_uid\fP są wypełnione
identyfikatorami odpowiednio procesu i użytkownika odpowiedzialnego za
dostarczenie pułapki. W przypadku \fBseccomp\fP(2) jako dostarczenie zdarzenia
pokazany zostanie zrzut. \fBBUS_MCERR_*\fP i \fIsi_addr_lsb\fP są rozszerzeniami
specyficznymi dla Linuksa.
.IP
\fBSEGV_BNDERR\fP będący podbłędem \fBSIGSEGV\fP wypełnia pola \fIsi_lower\fP i
\fIsi_upper\fP.
.IP
\fBSEGV_PKUERR\fP będący podbłędem \fBSIGSEGV\fP wypełnia pole \fIsi_pkey\fP.
.IP \[bu]
\fBSIGIO\fP/\fBSIGPOLL\fP (te dwie nazwy są synonimami pod Linuksem) wypełnia pola
\fIsi_band\fP i \fIsi_fd\fP.  Zdarzenie \fIsi_band\fP jest maską bitową zawierającą
te same wartości, które \fBpoll\fP(2) umieszcza w polu \fIrevents\fP. Pole
\fIsi_fd\fP oznacza deskryptor pliku, na którym wystąpiło dane zdarzenie
wejścia/wyjścia; więcej szczegółów w opisie \fBF_SETSIG\fP w podręczniku
\fBfcntl\fP(2).
.IP \[bu]
.\" commit a0727e8ce513fe6890416da960181ceb10fbfae6
.\"
\fBSIGSYS\fP, generowany (od Linuksa 3.5) gdy filtr seccomp zwróci
\fBSECCOMP_RET_TRAP\fP, wypełnia pola \fIsi_call_addr\fP, \fIsi_syscall\fP,
\fIsi_arch\fP, \fIsi_errno\fP i inne, zgodnie z opisem z \fBseccomp\fP(2).
.SS "The si_code field"
The \fIsi_code\fP field inside the \fIsiginfo_t\fP argument that is passed to a
\fBSA_SIGINFO\fP signal handler is a value (not a bit mask)  indicating why
this signal was sent.  For a \fBptrace\fP(2)  event, \fIsi_code\fP will contain
\fBSIGTRAP\fP and have the ptrace event in the high byte:
.PP
.in +4n
.EX
(SIGTRAP | PTRACE_EVENT_foo << 8).
.EE
.in
.PP
For a non\-\fBptrace\fP(2)  event, the values that can appear in \fIsi_code\fP are
described in the remainder of this section.  Since glibc 2.20, the
definitions of most of these symbols are obtained from \fI<signal.h>\fP
by defining feature test macros (before including \fIany\fP header file) as
follows:
.IP \[bu] 3
\fB_XOPEN_SOURCE\fP with the value 500 or greater;
.IP \[bu]
\fB_XOPEN_SOURCE\fP and \fB_XOPEN_SOURCE_EXTENDED\fP; or
.IP \[bu]
\fB_POSIX_C_SOURCE\fP with the value 200809L or greater.
.PP
For the \fBTRAP_*\fP constants, the symbol definitions are provided only in the
first two cases.  Before glibc 2.20, no feature test macros were required to
obtain these symbols.
.PP
W przypadku zwykłego sygnału, poniżej zestawiono wartości, które mogą
występować w \fIsi_code\fP dowolnego sygnału razem z powodami, dla których
sygnał był wygenerowany.
.RS 4
.TP 
\fBSI_USER\fP
\fBkill\fP(2).
.TP 
\fBSI_KERNEL\fP
Wysyłany przez jądro.
.TP 
\fBSI_QUEUE\fP
\fBsigqueue\fP(3).
.TP 
\fBSI_TIMER\fP
Wygaśnięcie timera POSIX.
.TP 
\fBSI_MESGQ\fP (od Linuksa 2.6.6)
Zmiana stanu kolejki komunikatów POSIX; patrz \fBmq_notify\fP(3)
.TP 
\fBSI_ASYNCIO\fP
Ukończenie asynchronicznej operacji wejścia/wyjścia.
.TP 
\fBSI_SIGIO\fP
Queued \fBSIGIO\fP (only up to Linux 2.2; from Linux 2.4 onward
\fBSIGIO\fP/\fBSIGPOLL\fP fills in \fIsi_code\fP as described below).
.TP 
\fBSI_TKILL\fP (od Linuksa 2.4.19)
.\" SI_DETHREAD is defined in Linux 2.6.9 sources, but isn't implemented
.\" It appears to have been an idea that was tried during 2.5.6
.\" through to Linux 2.5.24 and then was backed out.
\fBtkill\fP(2) lub \fBtgkill\fP(2)
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału \fBSIGILL\fP:
.RS 4
.TP 
\fBILL_ILLOPC\fP
Niedozwolony kod operacji.
.TP 
\fBILL_ILLOPN\fP
Niedozwolony operand.
.TP 
\fBILL_ILLADR\fP
Niedozwolony tryb adresowania.
.TP 
\fBILL_ILLTRP\fP
Niedozwolona pułapka.
.TP 
\fBILL_PRVOPC\fP
Uprzywilejowany kod operacji.
.TP 
\fBILL_PRVREG\fP
Uprzywilejowany rejestr.
.TP 
\fBILL_COPROC\fP
Błąd koprocesora.
.TP 
\fBILL_BADSTK\fP
Wewnętrzny błąd stosu.
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału \fBSIGFPE\fP:
.RS 4
.TP 
\fBFPE_INTDIV\fP
Dzielenie wartości całkowitej przez zero.
.TP 
\fBFPE_INTOVF\fP
Przepełnienie liczby całkowitej.
.TP 
\fBFPE_FLTDIV\fP
Dzielenie wartości zmiennoprzecinkowej przez zero.
.TP 
\fBFPE_FLTOVF\fP
Przekroczenie zakresu operacji zmiennoprzecinkowej.
.TP 
\fBFPE_FLTUND\fP
Przekroczenie (w dół) zakresu operacji zmiennoprzecinkowej.
.TP 
\fBFPE_FLTRES\fP
Niedokładny wynik operacji zmiennoprzecinkowej.
.TP 
\fBFPE_FLTINV\fP
Niepoprawna operacja zmiennoprzecinkowa.
.TP 
\fBFPE_FLTSUB\fP
Dolny indeks poza zakresem.
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału
\fBSIGSEGV\fP:
.RS 4
.TP 
\fBSEGV_MAPERR\fP
Adres niemapowany do obiektu.
.TP 
\fBSEGV_ACCERR\fP
Niepoprawne uprawnienia mapowanego obiektu.
.TP 
\fBSEGV_BNDERR\fP (od Linuksa 3.19)
.\" commit ee1b58d36aa1b5a79eaba11f5c3633c88231da83
Niepowodzenie sprawdzenia przypisania adresu.
.TP 
\fBSEGV_PKUERR\fP (od Linuksa 4.6)
.\" commit cd0ea35ff5511cde299a61c21a95889b4a71464e
Access was denied by memory protection keys.  See \fBpkeys\fP(7).  The
protection key which applied to this access is available via \fIsi_pkey\fP.
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału \fBSIGBUS\fP:
.RS 4
.TP 
\fBBUS_ADRALN\fP
Niepoprawne wyrównanie adresu.
.TP 
\fBBUS_ADRERR\fP
Nieistniejący adres fizyczny.
.TP 
\fBBUS_OBJERR\fP
Błąd sprzętowy specyficzny dla obiektu.
.TP 
\fBBUS_MCEERR_AR\fP (od Linuksa 2.6.32)
Sprzętowy błąd pamięci podczas sprawdzania komputera; wymagane podjęcie
akcji.
.TP 
\fBBUS_MCEERR_AO\fP (od Linuksa 2.6.32)
Wykryto sprzętowy błąd pamięci w procesie; opcjonalne podjęcie akcji.
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału
\fBSIGTRAP\fP:
.RS 4
.TP 
\fBTRAP_BRKPT\fP
Punkt wstrzymania procesu.
.TP 
\fBTRAP_TRACE\fP
Śledzony proces złapany.
.TP 
\fBTRAP_BRANCH\fP (od Linuksa 2.4, tylko IA64)
Śledzone rozgałęzienie procesu złapane.
.TP 
\fBTRAP_HWBKPT\fP (od Linuksa 2.4, tylko IA64)
Pułapka sprzętowa.
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału
\fBSIGCHLD\fP:
.RS 4
.TP 
\fBCLD_EXITED\fP
Proces potomny się zakończył.
.TP 
\fBCLD_KILLED\fP
Proces potomny został zabity.
.TP 
\fBCLD_DUMPED\fP
Potomek zakończył się w nieprawidłowy sposób.
.TP 
\fBCLD_TRAPPED\fP
Śledzony potomek został złapany.
.TP 
\fBCLD_STOPPED\fP
Proces potomny został zatrzymany.
.TP 
\fBCLD_CONTINUED\fP (od Linuksa 2.6.9)
Zatrzymany proces potomny został wznowiony.
.RE
.PP
Następujące wartości mogą zostać umieszczone w \fIsi_code\fP sygnału
\fBSIGIO\fP/\fBSIGPOLL\fP:
.RS 4
.TP 
\fBPOLL_IN\fP
Dostępne dane na wejściu.
.TP 
\fBPOLL_OUT\fP
Dostępne bufory wyjścia.
.TP 
\fBPOLL_MSG\fP
Dostępna wiadomość na wejściu.
.TP 
\fBPOLL_ERR\fP
Błąd wejścia/wyjścia.
.TP 
\fBPOLL_PRI\fP
Dostępne wejście o wysokim priorytecie.
.TP 
\fBPOLL_HUP\fP
Urządzenie odłączone.
.RE
.PP
Następująca wartość może zostać umieszczona w \fIsi_code\fP sygnału \fBSIGSYS\fP:
.RS 4
.TP 
\fBSYS_SECCOMP\fP (od Linuksa 3.5)
Wyzwolone przez regułę filtra \fBseccomp\fP(2).
.RE
.SS "Dynamically probing for flag bit support"
The \fBsigaction\fP()  call on Linux accepts unknown bits set in
\fIact\->sa_flags\fP without error.  The behavior of the kernel starting
with Linux 5.11 is that a second \fBsigaction\fP()  will clear unknown bits
from \fIoldact\->sa_flags\fP.  However, historically, a second
\fBsigaction\fP()  call would typically leave those bits set in
\fIoldact\->sa_flags\fP.
.PP
This means that support for new flags cannot be detected simply by testing
for a flag in \fIsa_flags\fP, and a program must test that \fBSA_UNSUPPORTED\fP
has been cleared before relying on the contents of \fIsa_flags\fP.
.PP
Since the behavior of the signal handler cannot be guaranteed unless the
check passes, it is wise to either block the affected signal while
registering the handler and performing the check in this case, or where this
is not possible, for example if the signal is synchronous, to issue the
second \fBsigaction\fP()  in the signal handler itself.
.PP
In kernels that do not support a specific flag, the kernel's behavior is as
if the flag was not set, even if the flag was set in \fIact\->sa_flags\fP.
.PP
The flags \fBSA_NOCLDSTOP\fP, \fBSA_NOCLDWAIT\fP, \fBSA_SIGINFO\fP, \fBSA_ONSTACK\fP,
\fBSA_RESTART\fP, \fBSA_NODEFER\fP, \fBSA_RESETHAND\fP, and, if defined by the
architecture, \fBSA_RESTORER\fP may not be reliably probed for using this
mechanism, because they were introduced before Linux 5.11.  However, in
general, programs may assume that these flags are supported, since they have
all been supported since Linux 2.6, which was released in the year 2003.
.PP
See EXAMPLES below for a demonstration of the use of \fBSA_UNSUPPORTED\fP.
.SH "WARTOŚĆ ZWRACANA"
\fBsigaction\fP() w przypadku powodzenia zwraca 0. W razie wystąpienia błędu
zwracane jest \-1 i ustawiana jest zmienna \fIerrno\fP wskazując na błąd.
.SH BŁĘDY
.TP 
\fBEFAULT\fP
\fIact\fP lub \fIoldact\fP wskazują na pamięć poza przestrzenią adresową procesu.
.TP 
\fBEINVAL\fP
Podano nieprawidłowy sygnał. Będzie to też generowane w przypadku próby
zmienienia akcji dla sygnałów \fBSIGKILL\fP lub \fBSIGSTOP\fP, które nie mogą być
przechwycone lub zignorowane.
.SH STANDARDY
.\" SVr4 does not document the EINTR condition.
POSIX.1\-2001, POSIX.1\-2008, SVr4.
.SH UWAGI
Dziecko utworzone przez \fBfork\fP(2) dziedziczy kopię ustawień sygnałów od
swojego rodzica. Podczas wywołania \fBexecve\fP(2) przywracane są wartości
domyślne ustawień, z wyjątkiem ustawienia ignorowania sygnału, które nie
jest zmieniane.
.PP
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.
.PP
POSIX.1\-1990 zabraniał ustawiania akcji dla \fBSIGCHLD\fP na
\fBSIG_IGN\fP. POSIX.1\-2001 i późniejsze pozwalają na to, tak że można użyć
ignorowania \fBSIGCHLD\fP, żeby zapobiec tworzeniu procesów\-duchów (patrz
\fBwait\fP(2)). Niemniej jednak, historyczne zachowanie systemów BSD i System\ V w zakresie ignorowania \fBSIGCHLD\fP jest inne, tak więc jedyną całkowicie
przenośną metodą zapewnienia, że potomek po zakończeniu nie zostanie
procesem\-duchem jest przechwytywanie sygnału \fBSIGCHLD\fP i wywołanie funkcji
\fBwait\fP(2) lub podobnej.
.PP
POSIX.1\-1990 określał tylko \fBSA_NOCLDSTOP\fP. W POSIX.1\-2001 dodano
\fBSA_NOCLDSTOP\fP, \fBSA_NOCLDWAIT\fP, \fBSA_NODEFER\fP, \fBSA_ONSTACK\fP,
\fBSA_RESETHAND\fP, \fBSA_RESTART\fP oraz \fBSA_SIGINFO\fP. Używanie tych nowych
wartości \fIsa_flags\fP może być mniej przenośne w aplikacjach przewidzianych
do użycia w starszych implementacjach Uniksa.
.PP
Flaga \fBSA_RESETHAND\fP jest kompatybilna z flagą w SVr4 o tej samej nazwie.
.PP
The \fBSA_NODEFER\fP flag is compatible with the SVr4 flag of the same name
under kernels 1.3.9 and later.  On older kernels the Linux implementation
allowed the receipt of any signal, not just the one we are installing
(effectively overriding any \fIsa_mask\fP settings).
.PP
\fBsigaction\fP() może być wywoływany z drugim argumentem o wartości NULL,
powodując w ten sposób zapytanie o bieżący handler sygnału. Może go też użyć
do sprawdzenia, czy dany sygnał jest prawidłowy na obecnej maszynie. W tym
celu należy zarówno drugi, jak i trzeci argument ustawić na NULL.
.PP
Nie można zablokować sygnałów \fBSIGKILL\fP lub \fBSIGSTOP\fP (przez podanie ich w
\fIsa_mask\fP). Próby takie zostaną zignorowane.
.PP
Zobacz \fBsigsetops\fP(3)  dla szczegółów o operacjach na zbiorach sygnałów.
.PP
.\"
Listę funkcji, które można bezpiecznie wywołać w procedurze obsługi sygnału,
można znaleźć w podręczniku \fBsignal\-safety\fP(7).
.SS "Różnice biblioteki C/jądra"
Funkcja opakowująca glibc dla \fBsigaction\fP() daje błąd (\fBEINVAL\fP) przy
próbie zmiany dyspozycji dwóch sygnałów czasu rzeczywistego używanych
wewnętrznie przez implementację wątkową NPTL. Więcej szczegółów w
podręczniku \fBnptl\fP(7).
.PP
On architectures where the signal trampoline resides in the C library, the
glibc wrapper function for \fBsigaction\fP()  places the address of the
trampoline code in the \fIact.sa_restorer\fP field and sets the \fBSA_RESTORER\fP
flag in the \fIact.sa_flags\fP field.  See \fBsigreturn\fP(2).
.PP
.\"
Oryginalne linuksowe wywołanie systemowe nazywało się \fBsigaction\fP(). Jednak
po pojawieniu się sygnałów czasu rzeczywistego w Linuksie 2.2, 32\-bitowy typ
\fIsigset_t\fP o stałym rozmiarze obsługiwany przez to wywołanie przestał
dobrze służyć swemu zadaniu. Z tego powodu, w celu obsługi powiększonego
typu \fIsigset_t\fP dodano nowe wywołanie systemowe \fBrt_sigaction\fP(). Nowe
wywołanie przyjmuje czwarty argument \fIsize_t sigsetsize\fP, który określa
rozmiar w bajtach zestawu sygnałów w \fIact.sa_mask\fP i
\fIoldact.sa_mask\fP. Argument ten obecnie musi mieć wartość
\fIsizeof(sigset_t)\fP (albo nastąpi błąd \fBEINVAL\fP). Opakowanie glibc
\fBsigaction\fP() ukrywa te detale przed nami, po cichu wywołując
\fBrt_sigaction\fP() jeśli udostępnia je jądro.
.SS Nieudokumentowane
Before the introduction of \fBSA_SIGINFO\fP, it was also possible to get some
additional information about the signal.  This was done by providing an
\fIsa_handler\fP signal handler with a second argument of type \fIstruct sigcontext\fP, which is the same structure as the one that is passed in the
\fIuc_mcontext\fP field of the \fIucontext\fP structure that is passed (via a
pointer) in the third argument of the \fIsa_sigaction\fP handler.  See the
relevant Linux kernel sources for details.  This use is obsolete now.
.SH BŁĘDY
When delivering a signal with a \fBSA_SIGINFO\fP handler, the kernel does not
always provide meaningful values for all of the fields of the \fIsiginfo_t\fP
that are relevant for that signal.
.PP
.\" commit 69be8f189653cd81aae5a74e26615b12871bb72e
Up to and including Linux 2.6.13, specifying \fBSA_NODEFER\fP in \fIsa_flags\fP
prevents not only the delivered signal from being masked during execution of
the handler, but also the signals specified in \fIsa_mask\fP.  This bug was
fixed in Linux 2.6.14.
.SH PRZYKŁADY
Patrz \fBmprotect\fP(2).
.SS "Probing for flag support"
The following example program exits with status \fBEXIT_SUCCESS\fP if
\fBSA_EXPOSE_TAGBITS\fP is determined to be supported, and \fBEXIT_FAILURE\fP
otherwise.
.PP
.\" SRC BEGIN (sigaction.c)
.EX
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void
handler(int signo, siginfo_t *info, void *context)
{
    struct sigaction oldact;

    if (sigaction(SIGSEGV, NULL, &oldact) == \-1
        || (oldact.sa_flags & SA_UNSUPPORTED)
        || !(oldact.sa_flags & SA_EXPOSE_TAGBITS))
    {
        _exit(EXIT_FAILURE);
    }
    _exit(EXIT_SUCCESS);
}

int
main(void)
{
    struct sigaction act = { 0 };

    act.sa_flags = SA_SIGINFO | SA_UNSUPPORTED | SA_EXPOSE_TAGBITS;
    act.sa_sigaction = &handler;
    if (sigaction(SIGSEGV, &act, NULL) == \-1) {
        perror("sigaction");
        exit(EXIT_FAILURE);
    }

    raise(SIGSEGV);
}
.EE
.\" SRC END
.SH "ZOBACZ TAKŻE"
\fBkill\fP(1), \fBkill\fP(2), \fBpause\fP(2), \fBpidfd_send_signal\fP(2),
\fBrestart_syscall\fP(2), \fBseccomp\fP(2), \fBsigaltstack\fP(2), \fBsignal\fP(2),
\fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigreturn\fP(2),
\fBsigsuspend\fP(2), \fBwait\fP(2), \fBkillpg\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3),
\fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBcore\fP(5), \fBsignal\fP(7)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Przemek Borys <pborys@dione.ids.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>
.
.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 .
