.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1994,1995 Mike Battersby .\" and Copyright 2004, 2005 Michael Kerrisk .\" based on work by faith@cs.unc.edu .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified, aeb, 960424 .\" Modified Fri Jan 31 17:31:20 1997 by Eric S. Raymond .\" 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 .\" SA_ONSTACK .\" Modified 2004-11-11 by Michael Kerrisk .\" Added mention of SIGCONT under SA_NOCLDSTOP .\" Added SA_NOCLDWAIT .\" Modified 2004-11-17 by Michael Kerrisk .\" 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 .\" Added notes on ptrace SIGTRAP and SYS_SECCOMP. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SIGACTION 2 "10 października 2019 r." Linux "Podręcznik programisty Linuksa" .SH NAZWA sigaction, rt_sigaction \- bada i zmienia akcję sygnału .SH SKŁADNIA .nf \fB#include \fP .PP \fBint sigaction(int \fP\fIsignum\fP\fB, const struct sigaction *\fP\fIact\fP\fB,\fP \fB struct sigaction *\fP\fIoldact\fP\fB);\fP .fi .PP .in -4n Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .in .PP .ad l \fBsigaction\fP(): _POSIX_C_SOURCE .PP \fIsiginfo_t\fP: _POSIX_C_SOURCE >= 199309L .ad b .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 The \fIsa_restorer\fP field is not intended for application use. (POSIX does not specify a \fIsa_restorer\fP field.) Some further details of the purpose of this field can be found in \fBsigreturn\fP(2). .PP \fIsa_handler\fP podaje akcję, związaną z sygnałem \fIsignum\fP i może to być m.in. \fBSIG_DFL\fP dla akcji domyślnej, \fBSIG_IGN\fP dla akcji ignorowania lub wskaźnik do funkcji obsługującej sygnał. Funkcja ta ma tylko jeden argument, w którym będzie przekazany numer sygnału. .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: .RS 4 .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 Nie chroni sygnałów przed ich odebraniem z ich własnej procedury obsługi. Znacznik ma znaczenie tylko podczas ustanawiania procedury obsługi sygnału. \fBSA_NOMASK\fP jest przestarzałym, niestandardowym synonimem tego znacznika. .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. \fBSA_ONESHOT\fP jest przestarzałym, niestandardowym synonimem tej flagi. .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. .RE .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). 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 */ sigval_t 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 * 2 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 * 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 * 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 * .\" 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 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 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 ustawia pola \fIsi_pid\fP, \fIsi_uid\fP, \fIsi_status\fP, \fIsi_utime\fP i \fIsi_stime\fP, dostarczając informacji o procesie potomnym. Pole \fIsi_pid\fP jest identyfikatorem potomka, \fIsi_uid\fP jest identyfikatorem rzeczywistego użytkownika procesu potomnego. Pole \fIsi_status\fP zawiera kod zakończenia potomka (jeśli \fIsi_code\fP jest równe \fBCLD_EXITED\fP) lub numer sygnału, który spowodował zmianę stanu. Pola \fIsi_utime\fP i \fIsi_stime\fP zawierają czasy spędzone przez potomka w przestrzeniach użytkownika i systemowej; w przeciwieństwie do \fBgetrusage\fP(2) i \fBtimes\fP(2), pola te nie zawierają czasów oczekiwania na potomków. W jądrach wcześniejszych niż 2.6, a także w 2.6.27 i nowszych, pola zawierają czas CPU w jednostkach \fIsysconf(_SC_CLK_TCK)\fP. W jądrach 2.6 wcześniejszych niż 2.6.27 z powodu błędu używane były (konfigurowalne) jednostki jiffy (patrz \fBtime\fP(7)). .IP * \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 * \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 * .\" 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\fP by defining feature test macros (before including \fIany\fP header file) as follows: .IP * 3 \fB_XOPEN_SOURCE\fP with the value 500 or greater; .IP * \fB_XOPEN_SOURCE\fP and \fB_XOPEN_SOURCE_EXTENDED\fP; or .IP * \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 For a regular signal, the following list shows the values which can be placed in \fIsi_code\fP for any signal, along with the reason that the signal was generated. .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 Kolejkowany \fBSIGIO\fP (tylko w jądrach do wersji 2.2 Linuksa; od Linuksa 2.4 \fBSIGIO\fP/\fBSIGPOLL\fP wypełniają \fIsi_code\fP, tak jak to opisano poniżej). .TP \fBSI_TKILL\fP (od Linuksa 2.4.19) .\" SI_DETHREAD is defined in 2.6.9 sources, but isn't implemented .\" It appears to have been an idea that was tried during 2.5.6 .\" through to 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 (since Linux 2.4, IA64 only)) Śledzone rozgałęzienie procesu złapane. .TP \fBTRAP_HWBKPT\fP (since Linux 2.4, IA64 only)) 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 .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 "ZGODNE Z" .\" 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 Flaga \fBSA_NODEFER\fP jest kompatybilna z podobną flagą z SVr4 dla jąder Linuksa 1.3.9 i nowszych. .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 .\" See \fBsignal\-safety\fP(7) for a list of the async\-signal\-safe functions that can be safely called inside from inside a signal handler. .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 W jądrze 2.6.13 i wcześniejszych podanie \fBSA_NODEFER\fP w \fIsa_flags\fP zapobiegało maskowaniu nie tylko dostarczonego sygnału podczas wykonywania procedury obsługi sygnału, ale także sygnałów określonych w \fIsa_mask\fP. Ten błąd został poprawiony w 2.6.14. .SH PRZYKŁAD Patrz \fBmprotect\fP(2). .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) .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 5.04 projektu Linux \fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem \%https://www.kernel.org/doc/man\-pages/. .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Robert Luberda i Michał Kułach . 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. Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres .MT manpages-pl-list@lists.sourceforge.net .ME .