Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigaction(3-thr) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sigsuspend(2)

sigvec(2)

siginterrupt(3)

sigpending(3-thr)

sigprocmask(3-thr)

setjmp(3C)

sigsetops(3C)

signal(5)

tty(7)

sigaction(3-thr)                                           sigaction(3-thr)

NAME
     sigaction - Synchrone Signalaktionen (Signalfunktionen der POSIX-
     Software) prüfen und ändern

SYNTAX
     #include <signal.h>

     struct sigaction {
         void (*sahandler)();
         sigsett samask;
         int saflags;
     };

     int sigaction(sig, act, oact) int sig; const
                   struct sigaction *act; struct sigaction *oact;

PARAMETER
     sig       Synchrones Signal, das geprüft oder geändert werden soll.

     act       Zeigt auf eine Struktur sigaction, die die Aktion
               beschreibt, die beim Empfang des durch den Wert des Parame-
               ters act angegebenen Signals auszuführen ist.

     oact      Zeigt auf eine Struktur sigaction, in der die Signalaktions-
               daten zurückgegeben werden, die zur Zeit des Funktionsauf-
               rufs von sigaction() galten.

BESCHREIBUNG
     Mit dem POSIX-Service sigaction können Signalbehandlungsroutinen
     (Handler) für jeden Thread zum Abfangen von synchronen Signalen
     installiert werden. Der Service wird in einem Multithread-Prozeß auf-
     gerufen, um thread-spezifische Aktionen für diese Signale einzurich-
     ten. Dieser Aufruf entspricht dem POSIX-Äquivalent des Systemaufrufs
     sigaction() mit folgenden Ausnahmen bzw. Abweichungen:

     -  Die Routine sigaction() ändert nur das Verhalten für einzelne Thre-
        ads.

     -  Die Routine sigaction() gilt nur für synchrone Signale. Der Ver-
        such, eine Signalaktion für ein asynchrones Signal festzulegen,
        führt zu einem Fehler. Dies gilt auch in einem Einzel-Thread-Pro-
        zeß.

        Jede Multithread-Anwendung, die DCE Threads verwendet, muß die
        Funktion sigwait() für die Behandlung asynchroner Signale verwen-
        den. Die Funktion sigwait() kann verwendet werden, um synchron auf
        die Auslieferung asynchron generierter Signale zu warten.

     -  Das Flag SARESTART wird immer vom zugrundeliegenden System im
        POSIX-Modus gesetzt, so daß unterbrochene Systemaufrufe nicht neu
        gestartet werden, sondern mit dem Rückgabewert -1 und dem Fehler
        EINTR in errno fehlschlagen.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

sigaction(3-thr)                                           sigaction(3-thr)

        Das Flag SARESTART des Systems hat genau die gegenteilige Bedeu-
        tung wie das Flag SARESTART im Feld saflags und wird immer im
        zugrundeliegenden, aufgrund von sigaction() erfolgten Systemaufruf
        gesetzt, unabhängig davon, ob SARESTART im Feld saflags angegeben
        worden ist.

     -  Die Signalmaske wird über die POSIX-Funktionen sigsetops(3C) bear-
        beitet. Dies sind die Funktionen sigemptyset(3C), sigfillset(3C),
        sigaddset(3C), sigdelset(3C) und sigismember(3C).

     Über die Funktion sigaction() kann durch Angabe eines Nullzeigers für
     act in Erfahrung gebracht werden, wie ein bestimmtes Signal momentan
     behandelt wird, da die Aktion unverändert bleibt, es sei denn, dieser
     Parameter ist kein Nullzeiger. Der Parameter oact darf kein Nullzeiger
     sein, wenn die zur Zeit des Aufrufs von sigaction() gültige Signalak-
     tion zurückgegeben werden soll.

RÜCKGABEWERTE
     Mögliche Rückgabewerte sind:

     EFAULT    Entweder act oder oact zeigt auf Speicher, der für den
               Adreßraum des Prozesses nicht gültig ist. Eine neue Signal-
               behandlungsroutine wird nicht installiert.

     EINVAL    Der durch sig angegebene Wert ist ungültig. Eine neue Sig-
               nalbehandlungsroutine wird nicht installiert.

     EINVAL    Es wurde versucht, eine Signalbehandlungsroutine für SIGKILL
               oder SIGSTOP zu ignorieren oder anzugeben. Eine neue Signal-
               behandlungsroutine wird nicht installiert.

SIEHE AUCH
     sigsuspend(2), sigvec(2), siginterrupt(3), sigpending(3-thr),
     sigprocmask(3-thr), setjmp(3C), sigsetops(3C), signal(5), tty(7).




















Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026