bionic (2) sigaction.2.gz

Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       sigaction, rt_sigaction - Signalaktionen untersuchen und ändern

ÜBERSICHT

       #include <signal.h>

       int sigaction(int signum, const struct sigaction *act,
                     struct sigaction *oldact);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       sigaction(): _POSIX_C_SOURCE

       siginfo_t: _POSIX_C_SOURCE >= 199309L

BESCHREIBUNG

       Der  Systemaufruf  sigaction  wird  zur  Veränderung  der  von  einem  Prozess beim Empfang eines Signals
       durchgeführten Aktion benutzt. (Siehe signal(7) für einen Überblick über Signale.)

       signum legt das Signal fest und kann jedes gültige Signal außer SIGKILL und SIGSTOP sein.

       Falls act nicht NULL ist, wird die neue Aktion für Signal signum aus act installiert. Falls oldact  nicht
       Null ist, wird die vorherige Aktion in oldact gespeichert.

       Die Struktur sigaction wird durch etwas wie das folgende definiert:

           struct sigaction {
               void     (*sa_handler)(int);
               void     (*sa_sigaction)(int, siginfo_t *, void *);
               sigset_t   sa_mask;
               int        sa_flags;
               void     (*sa_restorer)(void);
           };

       Auf  einigen  Architekturen  ist  eine Union beteiligt; weisen Sie diese nicht sowohl sa_handler als auch
       sa_sigaction zu.

       Das Feld sa_restorer ist nicht zur Verwendung durch Anwendungen gedacht.  (POSIX  spezifiziert  ein  Feld
       sa_restorer nicht.) Weitere Details über den Zweck dieses Feldes finden Sie in sigreturn(2).

       sa_handler legt die signum zugeordnete Funktion fest; sie könnte SIG_DFL als Vorgabeaktion sein, SIG_IGN,
       um dieses Signal zu ignorieren oder ein Zeiger auf eine Signalhandhabungsfunktion. Diese Funktion  erhält
       die Signalnummer als einziges Argument.

       Falls   SA_SIGINFO   in   sa_flags   festgelegt  ist,  dann  legt  sa_sigaction  (statt  sa_handler)  die
       Signal-Handhabungsfunktion für signum fest. Diese Funktion empfängt wie unten beschrieben drei Argumente.

       sa_mask  legt  eine  Signalmaske  fest,  die  angibt,  welche  Signale   während   der   Ausführung   der
       Signalhandhabungsfunktion  blockiert  (d.h.  zu  der  Signalmaske  des Threads, in der der Signal-Handler
       aufgerufen wird, hinzugefügt) werden sollen. Zusätzlich wird das Signal, das den Handler  ausgelöst  hat,
       blockiert, falls nicht der Schalter SA_NODEFER verwandt wurde.

       sa_flags  legt  eine  Gruppe  von  Schaltern fest, die das Verhalten des Signals verändern. Es wird durch
       bitweise ODER-Verknüpfung von Null oder mehreren der folgenden Werte erstellt:

           SA_NOCLDSTOP
                  Falls signum SIGCHLD ist, werden keine  Benachrichtigungen  empfangen,  wenn  ein  Kindprozess
                  gestoppt (d.h. wenn es SIGSTOP, SIGTSTP, SIGTTIN oder SIGTTOU empfängt) oder wiederaufgenommen
                  wird (d.h. es SIGCONT empfängt) (siehe wait(2)). Dieser Schalter ist nur bei  der  Einrichtung
                  eines Handlers für SIGCHLD von Bedeutung.

           SA_NOCLDWAIT (seit Linux 2.6)
                  Falls  signum  SIGCHLD  ist,  Kinder  nicht  beim  Beenden  in  Zombies  umwandeln. Siehe auch
                  waitpid(2). Dieser Schalter ist nur beim Aufbau eines Handlers für SIGCHLD von Bedeutung  oder
                  wenn die Zuordnung dieses Signals zu SIG_DFL gesetzt wird.

                  Falls  der Schalter SA_NOCLDWAIT beim Einrichten eines Handlers für SIGCHLD gesetzt ist, lässt
                  es POSIX.1 unspezifiziert, ob ein Signal SIGCHLD generiert wird,  wenn  sich  ein  Kindprozess
                  beendet.  Unter  Linux  wird  in diesem Fall ein Signal SIGCHLD generiert, bei einigen anderen
                  Implementierungen passiert das nicht.

           SA_NODEFER
                  Es wird nicht verhindert, dass das Signal innerhalb seines eigenen  Signal-Handlers  empfangen
                  wird.  Dieser Schalter ist nur bei der Einrichtung eines Handlers von Bedeutung. SA_NOMASK ist
                  ein veraltetes, nicht standardisiertes Synonym für diesen Schalter.

           SA_ONSTACK
                  Den Signal-Handler auf einen alternativen, durch sigaltstack(2) bereitgestellten  Signal-Stack
                  aufrufen.  Falls  kein  alternativer  Stack  verfügbar  ist, wird der Standard-Stack verwandt.
                  Dieser Schalter ist nur beim Aufbau eines Signal-Handlers von Bedeutung.

           SA_RESETHAND
                  Stellt die Signalaktion beim Eintritt in den Signal-Handler auf den Vorgabewert zurück. Dieser
                  Schalter  ist  nur  bei  der  Einrichtung  eines  Handlers  von  Bedeutung. SA_ONESHOT ist ein
                  veraltetes, nicht standardisiertes Synonym für diesen Schalter.

           SA_RESTART
                  Stellt ein zur BSD-Signalsemantik kompatibles Verhalten  her,  indem  bestimmte  Systemaufrufe
                  über  Signale  hinweg neu gestartet werden können. Dieser Schalter ist nur bei der Einrichtung
                  eines Handlers von Bedeutung. Siehe signal(7) für eine Diskussion bezüglich des Neustarts  von
                  Systemaufrufen.

           SA_RESTORER
                  Nicht  für  die  Verwendung  von  Anwendungen gedacht. Dieser Schalter wird von C-Bibliotheken
                  verwandt, um anzuzeigen, dass  das  Feld  sa_restorer  die  Adresse  eines  »Signaltrampolins«
                  enthält. Siehe sigreturn(2) für weitere Details.

           SA_SIGINFO (seit Linux 2.2)
                  Der  Signal-Handler  erwartet  drei Argumente, nicht eines. In diesem Fall sollte sa_sigaction
                  auf sa_handler gesetzt werden. Dieser Schalter ist nur bei der Einrichtung eines Handlers  von
                  Bedeutung.

   Das Argument siginfo_t eines SA_SIGINFO-Handlers
       Wenn  der  Schalter  SA_SIGINFO in act.sa_flags angegeben wird, wird die Adresse des Signal-Handlers über
       das Feld act.sa_sigaction übergeben. Dieser Handler akzeptiert drei Argumente wie folgt:

           void
           handler(int sig, siginfo_t *info, void *ucontext)
           {
               ...
           }

       Die Bedeutung der drei Argumente im Einzelnen:

       sig    Die Anzahl der Signale, die den Aufruf des Handlers hervorriefen.

       info   Ein Zeiger auf ein siginfo_t. Dies  ist  eine  Struktur,  die  weitere  Informationen,  wie  unten
              beschrieben, über das Signal enthält.

       ucontext
              Dies  ist  ein Zeiger auf eine Struktur ucontext_t, typenumgewandelt auf void *. Die Struktur, auf
              die von diesem Feld gezeigt wird, enthält Signalkontextinformationen, die  vom  Benutzerraum-Stack
              durch  den  Kernel  gespeichert wurden; für Details siehe sigreturn(2). Weitere Informationen über
              die Struktur ucontext_t können in getcontext(3)  gefunden  werden.  Typischerweise  verwendet  die
              Handler-Funktion das dritte Argument nicht.

       Der Datentyp siginfo_t ist eine Struktur mit den folgenden Feldern:

           siginfo_t {
               int      si_signo;     /* Signal number */
               int      si_errno;     /* An errno value */
               int      si_code;      /* Signal code */
               int      si_trapno;    /* Trap number that caused
                                         hardware-generated signal
                                         (unused on most architectures) */
               pid_t    si_pid;       /* Sending process ID */
               uid_t    si_uid;       /* Real user ID of sending process */
               int      si_status;    /* Exit value or signal */
               clock_t  si_utime;     /* User time consumed */
               clock_t  si_stime;     /* System time consumed */
               sigval_t si_value;     /* Signal value */
               int      si_int;       /* POSIX.1b signal */
               void    *si_ptr;       /* POSIX.1b signal */
               int      si_overrun;   /* Timer overrun count;
                                         POSIX.1b timers */
               int      si_timerid;   /* Timer ID; POSIX.1b timers */
               void    *si_addr;      /* Memory location which caused fault */
               long     si_band;      /* Band event (was int in
                                         glibc 2.3.2 and earlier) */
               int      si_fd;        /* File descriptor */
               short    si_addr_lsb;  /* Least significant bit of address
                                         (since Linux 2.6.32) */
               void    *si_lower;     /* Lower bound when address violation
                                         occurred (since Linux 3.19) */
               void    *si_upper;     /* Upper bound when address violation
                                         occurred (since Linux 3.19) */
               int      si_pkey;      /* Protection key on PTE that caused
                                         fault (since Linux 4.6) */
               void    *si_call_addr; /* Address of system call instruction
                                         (since Linux 3.5) */
               int      si_syscall;   /* Number of attempted system call
                                         (since Linux 3.5) */
               unsigned int si_arch;  /* Architecture of attempted system call
                                         (since Linux 3.5) */
           }

       si_signo,  si_errno und si_code sind für alle Signale definiert. (si_errno ist im Allgemeinen unter Linux
       unbenutzt). Der Rest der Struktur kann eine Union sein, daher sollten nur die Felder  ausgelesen  werden,
       die für das übergebene Signal von Bedeutung sind:

       * Signale,  die  mit  kill(2)  und  sigqueue(3)  gesandt werden, füllen si_pid und si_uid aus. Zusätzlich
         füllen Signale, die mit sigqueue(3) gesandt werden, si_int und si_ptr mit den  vom  Sender  angegebenen
         Werten aus. Siehe sigqueue(3) für weitere Details.

       * Signale,  die  von  POSIX.1b-Zeitgebern  gesendet  werden  (seit  Linux  2.6),  füllen  si_overrun  und
         si_timerid. Das Feld si_timerid ist eine  interne  Kennung,  die  vom  Kernel  zur  Identifikation  des
         Zeitgebers  benutzt  wurde,  sie  ist  nicht  mit  der  durch timer_create(2) zurückgelieferten Kennung
         identisch. Das Feld si_overrun ist der Zeitgeber-Überlaufzähler. Dies ist die gleiche Information,  wie
         sie  durch  einen Aufruf von timer_getoverrun(2) erhalten wird. Diese Felder sind nicht standardisierte
         Linux-Erweiterungen.

       * Signale, die der Nachrichtenbenachrichtigungswarteschlange gesandt werden (siehe die  Beschreibung  von
         SIGEV_SIGNAL  in mq_notify(3)), füllen si_int/si_ptr, wobei sigev_value für mq_notify(3) bereitgestellt
         wird, si_pid mit der Prozesskennung des  Absenders  und  si_uid  mit  der  echten  Benutzerkennung  des
         Nachrichtensenders.

       * SIGCHLD füllt si_pid, si_uid, si_status, si_utime und si_stime mit Informationen über das Kind aus. Das
         Feld si_pid ist die Prozesskennung des Kindes; si_uid ist die echte Benutzerkennung. Das Feld si_status
         enthält  den  Exit-Status  des  Kindes  (falls  si_code  CLD_EXITED ist) oder die Signalnummer, die den
         Prozess zur Zustandsänderung veranlasst hat.  si_utime  und  si_stime  enthalten  die  vom  Kindprozess
         verwandte  Benutzer-  und  System-CPU-Zeit,  diese Felder enthalten nicht die Zeit von Kindern, auf die
         gewartet wurde (anders als getrusage(2) und times(2)). In Kerneln bis 2.6  und  seit  2.6.27  berichten
         diese  Felder  die  CPU-Zeit  in Einheiten von sysconf(_SC_CLK_TCK). In 2.6er Kerneln vor 2.6.27 wurden
         durch einen Fehler diese Felder in Einheiten  der  (konfigurierbaren)  System-Jiffys  berichtet  (siehe
         time(7)).

       * SIGILL,  SIGFPE,  SIGSEGV,  SIGBUS,  and SIGTRAP fill in si_addr with the address of the fault. On some
         architectures, these signals also fill in the si_trapno field.

         Some suberrors of SIGBUS, in particular BUS_MCEERR_AO and BUS_MCEERR_AR, also fill in si_addr_lsb. This
         field  indicates  the  least  significant  bit  of the reported address and therefore the extent of the
         corruption.   For   example,    if    a    full    page    was    corrupted,    si_addr_lsb    contains
         log2(sysconf(_SC_PAGESIZE)).   When   SIGTRAP   is   delivered   in  response  to  a  ptrace(2)   event
         (PTRACE_EVENT_foo), si_addr is not populated, but si_pid and si_uid are populated with  the  respective
         process  ID and user ID responsible for delivering the trap. In the case of seccomp(2), the tracee will
         be shown as delivering the event. BUS_MCEERR_* and si_addr_lsb are Linux-specific extensions.

         Der Unterfehler SEGV_BNDERR von SIGSEGV belegt si_lower und si_upper.

         Der Unterfehler SEGV_PKUERR von SIGSEGV belegt si_pkey.

       * SIGIO/SIGPOLL (die zwei Namen sind unter Linux synonym) füllen si_band  und  si_fd  aus.  Das  Ereignis
         si_band  ist  eine Bitmaske, die die gleichen Werte enthält, die auch durch poll(2) in das Feld revents
         eingetragen werden. Das Feld si_fd zeigt den Dateideskriptor an, für den ein  E/A-Ereignis  aufgetreten
         ist. Für weitere Details lesen Sie die Beschreibung von F_SETSIG in fcntl(2).

       * SIGSYS,  erstellt  (seit  Linux  3.5)  wenn  ein  Seccomp-Filter  SECCOMP_RET_TRAP zurückliefert, füllt
         si_call_addr, si_syscall, si_arch, si_errno und andere Felder wie in seccomp(2) beschrieben aus.

   Das Feld si_code
       Das Feld si_code innerhalb des an den Signal-Handler SA_SIGINFO übergebenen Arguments siginfo_t  ist  ein
       Wert  (keine  Bitmaske),  der angibt, warum dieses Signal gesendet wurde. Für ein ptrace(2)-Ereignis wird
       si_code SIGTRAP enthalten und das Ptrace-Ereignis im hohen Byte enthalten.

           (SIGTRAP | PTRACE_EVENT_foo << 8).

       Für ein Ereignis außerhalb von ptrace(2) sind die Werte, die in si_code erscheinen können, im Rest dieses
       Abschnittes  beschrieben.  Seit  Glibc  2.20  werden  die  Definitionen  der  meisten  dieser Symbole aus
       <signal.h> erhalten, indem Feature-Test-Makros (vor dem Einbinden  irgendeiner  Header-Datei)  wie  folgt
       definiert werden:

       *  _XOPEN_SOURCE mit dem Wert 500 oder größer;

       *  _XOPEN_SOURCE und _XOPEN_SOURCE_EXTENDED; oder

       *  _POSIX_C_SOURCE mit einem Wert 200809L oder größer.

       Für die Konstanten TRAP_* werden die Symboldefinitionen nur in den ersten zwei Fällen bereitgestellt. Vor
       Glibc 2.20 wurde kein Feature-Test-Makro zum Erhalt dieser Symbole benötigt.

       Für ein reguläres Signal zeigt die folgende Liste die Werte, die  in  si_code  für  jedes  Signal  gelegt
       werden können, zusammen mit dem Grund für die Erstellung des Signals.

           SI_USER
                  kill(2)

           SI_KERNEL
                  Vom Kernel geschickt

           SI_QUEUE
                  sigqueue(3)

           SI_TIMER
                  POSIX-Zeitgeber ausgelaufen

           SI_MESGQ (seit Linux 2.6.6)
                  POSIX-Nachrichtenwarteschlangenstatus geändert; siehe mq_notify(3).

           SI_ASYNCIO
                  AIO abgeschlossen

           SI_SIGIO
                  SIGIO  in die Warteschlange eingereiht (nur in Kerneln bis Linux 2.2; seit Linux 2.4 füllt wie
                  unten beschrieben SIGIO/SIGPOLL in si_code).

           SI_TKILL (seit Linux 2.4.19)
                  tkill(2) oder tgkill(2)

       Die folgenden Werte können in si_code für ein Signal SIGILL gesetzt werden:

           ILL_ILLOPC
                  Ungültiger Opcode

           ILL_ILLOPN
                  Ungültiger Operand

           ILL_ILLADR
                  Ungültiger Adressierungsmodus

           ILL_ILLTRP
                  Illegal trap.

           ILL_PRVOPC
                  Privilegierter Opcode

           ILL_PRVREG
                  Privilegiertes Register

           ILL_COPROC
                  Koprozessorfehler

           ILL_BADSTK
                  Interner Stack-Fehler

       Die folgenden Werte können in si_code für ein Signal SIGFPE gesetzt werden:

           FPE_INTDIV
                  Ganzzahldivision durch Null

           FPE_INTOVF
                  Ganzzahlüberlauf

           FPE_FLTDIV
                  Fließkommadivision durch Null

           FPE_FLTOVF
                  Fließkommazahlüberlauf

           FPE_FLTUND
                  Fließkommazahlunterlauf

           FPE_FLTRES
                  Ungenaues Fließkommaergebnis

           FPE_FLTINV
                  Ungültige Fließkommazahlaktion

           FPE_FLTSUB
                  Index außerhalb des Bereichs

       Die folgenden Werte können in si_code für ein Signal SIGSEGV gesetzt werden:

           SEGV_MAPERR
                  Address not mapped to object.

           SEGV_ACCERR
                  Invalid permissions for mapped object.

           SEGV_BNDERR (seit Linux 3.19)
                  Adressgrenzenprüfung fehlgeschlagen

           SEGV_PKUERR (seit Linux 4.6)
                  Zugriff wurde durch Speicherschutzschlüssel verweigert. Siehe pkeys(7). Der auf diesen Zugriff
                  passende Schutzschlüssel ist in si_pkey verfügbar.

       Die folgenden Werte können in si_code für ein Signal SIGBUS gesetzt werden:

           BUS_ADRALN
                  Ungültige Adressausrichtung.

           BUS_ADRERR
                  Nichtexistierende physische Adresse.

           BUS_OBJERR
                  Objektspezifischer Hardwarefehler.

           BUS_MCEERR_AR (seit Linux 2.6.32)
                  Hardware memory error consumed on a machine check; action required.

           BUS_MCEERR_AO (seit Linux 2.6.32)
                  Hardwarespeicherfehler im Prozess erkannt aber nicht verwendet; Aktion optional.

       Die folgenden Werte können in si_code für ein Signal SIGTRAP gesetzt werden:

           TRAP_BRKPT
                  Prozess-Unterbrechungspunkt

           TRAP_TRACE
                  Process trace trap.

           TRAP_BRANCH (seit Linux 2.4, IA64 only))
                  Process taken branch trap.

           TRAP_HWBKPT (seit Linux 2.4, IA64 only))
                  Hardware-Unterbrechungs-/Überwachungspunkt.

       Die folgenden Werte können in si_code für ein Signal SIGCHLD gesetzt werden:

           CLD_EXITED
                  Kind hat sich beendet.

           CLD_KILLED
                  Kind wurde getötet

           CLD_DUMPED
                  Kind wurde anormal beendet.

           CLD_TRAPPED
                  Traced child has trapped.

           CLD_STOPPED
                  Kind wurde gestoppt.

           CLD_CONTINUED (seit Linux 2.6.9)
                  Gestopptes Kind hat fortgefahren.

       Die folgenden Werte können in si_code für ein Signal SIGIOSIGPOLL gesetzt werden:

           POLL_IN
                  Dateneingabe verfügbar

           POLL_OUT
                  Ausgabepuffer verfügbar

           POLL_MSG
                  Eingabenachricht verfügbar

           POLL_ERR
                  E/A-Fehler (engl. I/O).

           POLL_PRI
                  Eingabe hoher Priorität verfügbar

           POLL_HUP
                  Gerät abgetrennt

       Die folgenden Werte können in si_code für ein Signal SIGSYS gesetzt werden:

           SYS_SECCOMP (seit Linux 3.5)
                  Ausgelöst durch eine seccomp(2)-Filterregel.

RÜCKGABEWERT

       sigaction()  gibt  bei  Erfolg Null zurück. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend
       gesetzt.

FEHLER

       EFAULT act oder oldact zeigt aus dem vom Prozess adressierbaren Adressraum heraus.

       EINVAL Ein ungültiges Signal wurde angegeben. Dieser Fehler wird auch ausgelöst, wenn versucht wird,  die
              Aktion für SIGKILL oder SIGSTOP zu ändern, da diese nicht abgefangen oder ignoriert werden können.

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, SVr4.

ANMERKUNGEN

       Ein mittels fork(2) erstelltes Kind erbt eine Kopie der Signalzuordnungen seines Elternprozesses. Während
       eines execve(2) werden die Zuordnungen von  verwalteten  Signalen  auf  die  Vorgabe  zurückgesetzt;  die
       Zuordnung ignorierter Signale werden unverändert gelassen.

       Laut  POSIX  ist  das  Verhalten  eines  Prozesses undefiniert, nachdem er ein Signal SIGFPE, SIGILL oder
       SIGSEGV ignoriert hat, das nicht von kill(2) oder raise(3) erstellt wurde.  Ganzzahldivision  durch  Null
       hat  ein undefiniertes Ergebnis. Auf einigen Architekturen wird dies ein Signal SIGFPE hervorrufen. (Auch
       kann die Division der größten negativen  Ganzzahl  durch  -1  SIGFPE  hervorrufen.)  Wird  dieses  Signal
       ignoriert, kann eine Endlosschleife auftreten.

       POSIX.1-1990  verbot das Setzen der Aktion für SIGCHLD bis SIG_IGN. POSIX.1-2001 und neuer erlauben diese
       Möglichkeit, so dass das Ignorieren von SIGCHLD zur Vermeidung von Zombies verwandt  werden  kann  (siehe
       wait(2)).  Allerdings  unterscheiden sich die historischen BSD- und System-V-Verhalten für das Ignorieren
       von SIGCHLD, so dass die einzige komplett portable Methode,  um  sicherzustellen,  dass  beendete  Kinder
       nicht  Zombies  werden,  das  Fangen des Signals SIGCHLD und das Durchführen eines wait(2) oder ähnlichem
       ist.

       POSIX.1-1990 spezifizierte nur SA_NOCLDSTOP. POSIX.1-2001 fügte SA_NOCLDSTOP,  SA_NOCLDWAIT,  SA_NODEFER,
       SA_ONSTACK,  SA_RESETHAND,  SA_RESTART und SA_SIGINFO hinzu. Benutzung letzterer Werte in sa_flags könnte
       in Anwendungen, die für ältere UNIX-Implementierungen gedacht sind, weniger portabel sein.

       Der Schalter SA_RESETHAND ist zu dem SVr4-Schalter mit dem gleichen Namen kompatibel.

       Der Schalter SA_NODEFER ist mit dem SVr4-Schalter des gleichen  Namens  unter  Kerneln  1.3.9  und  neuer
       kompatibel.  Unter  älteren  Kerneln  erlaubte  die Linux-Implementierung nicht das Empfangen irgendeines
       Signals, nicht nur desjenigen, das installiert wurde (was effektiv die Einstellungen sa_mask außer  Kraft
       setzt).

       Wird  sigaction  mit  Null  als  zweitem  Argument  aufgerufen,  kann  der augenblickliche Signal-Handler
       abgefragt werden. Die Funktion kann auch dazu benutzt werden,  die  Gültigkeit  eines  Signales  für  die
       aktuelle Maschine zu überprüfen, indem sie mit Null als zweitem und drittem Argument aufgerufen wird.

       Es  ist  nicht  möglich,  SIGKILL  oder  SIGSTOP  zu blockieren (indem Sie in sa_mask festgelegt werden).
       Derartige Versuche werden ohne Rückmeldung ignoriert.

       Siehe sigsetops(3) für detaillierte Informationen über die Manipulation von Signalgruppen.

       Siehe signal-safety(7) für eine Liste der asynchron-signalsicheren Funktionen, die sicher innerhalb eines
       Signal-Handlers aufgerufen werden können.

   Unterschiede C-Bibliothek/Kernel
       Die Glibc-Wrapper-Funktion für sigaction() liefert bei Versuchen, die Zuordnung der zwei intern durch die
       NPTL-Threading-Implementierung verwandten Echtzeitsignale zu ändern, einen Fehler zurück.  Siehe  nptl(7)
       für Details.

       Auf   Architekturen,  bei  denen  das  Signal-Trampolin  innerhalb  der  C-Bibliothek  liegt,  setzt  die
       Glibc-Wrapper-Funktion für sigaction() die Adresse des Trampolin-Codes in das  Feld  act.sa_restorer  und
       SA_RESTORER in das Feld act.sa_flags. Siehe sigreturn(2).

       Der  ursprüngliche  Linux-Systemaufruf hieß sigaction(). Mit dem Hinzufügen von Echtzeitsignalen in Linux
       2.2 passte der mit einer festen Größe versehene 32-Bit-Typ sigset_t nicht mehr für den Zweck. Daher wurde
       ein  neuer  Systemaufruf  rt_sigaction()  mit  einem  vergrößerten  Typ  sigset_t  hinzugefügt.  Der neue
       Systemaufruf akzeptiert ein viertes Argument size_t sigsetsize, das die Größe in Bytes  der  Signalgruppe
       in  act.sa_mask  und  oldact.sa_mask  festlegt.  Dieses  Argument  muss derzeit den Wert sizeof(sigset_t)
       enthalten oder der Fehler EINVAL  tritt  auf.  Die  Glibc-Wrapper-Funktion  sigaction()  versteckt  diese
       Details und ruft rt_sigaction() transparent auf, wenn der Kernel ihn bereitstellt.

   Undokumentiert
       Vor  der  Einführung  von  SA_SIGINFO  war  es  auch  möglich, einige zusätzliche Informationen durch die
       Verwendung eines sa_handler mit einem zweiten Argument des Typs struct sigcontext zu erhalten. Siehe  die
       relevanten Kernelquellen für Details. Diese Verwendung ist jetzt veraltet.

FEHLER

       In  Kerneln bis einschließlich 2.6.13 verhinderte die Festlegung von SA_NODEFER in sa_flags nicht nur die
       Ausblendung des ausgelieferten Signals während der Ausführung des Handlers sondern auch  der  in  sa_mask
       festgelegten Signale. Dieser Fehler wurde in Kernel 2.6.14 behoben.

BEISPIEL

       Siehe mprotect(2)

SIEHE AUCH

       kill(1),  kill(2),  pause(2),  restart_syscall(2),  seccomp(2),  sigaltstack(2),  signal(2), signalfd(2),
       sigpending(2),   sigprocmask(2),   sigreturn(2),    sigsuspend(2),    wait(2),    killpg(3),    raise(3),
       siginterrupt(3), sigqueue(3), sigsetops(3), sigvec(3), core(5), signal(7)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.15  des Projekts Linux-man-pages. Eine Beschreibung des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche Übersetzung dieser Handbuchseite wurde von René Tschirley <gremlin@cs.tu-berlin.de>, Martin
       Eberhard Schauer <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der  Übersetzung  dieser  Handbuchseite  finden, schicken Sie bitte eine E-Mail an
       <debian-l10n-german@lists.debian.org>.