Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ signal(3-ucb) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

kill(1)

execve(2)

fcntl(2)

fork(2)

getrlimit(2)

kill(2)

ptrace(2)

read(2)

sigaction(2)

wait(2)

write(2)

sigblock(3)

sigpause(3)

sigsetmask(3)

sigstack(3)

sigvec(3)

wait3(3)

getitimer(3C)

setjmp(3C)

setjmp(3C-ucb)

signal(5)

termio(7)

signal(3-ucb)           (BSD Compatibility Package)           signal(3-ucb)

NAME
     signal - Vereinfachte Signalfunktion der Software

SYNTAX
     /usr/ucb/cc [flag ...] file ... -lucb

     #include <signal.h>

     void (*signal(sig, func))()
     void (*func)();

BESCHREIBUNG
     signal ist eine vereinfachte Schnittstelle für die allgemeinere Funk-
     tion sigvec(3). Programme, die signal der Funktion sigvec vorziehen,
     sind leichter auf andere Systeme portierbar.

     Ein Signal wird bei manchen anormalen Ereignissen ausgegeben, vom
     Benutzer eines Terminals (durch Quit, Interrupt oder Stop), durch
     einen Programmfehler (zum Beispiel einen Busfehler), durch einen
     Request eines anderen Programms (Kill) oder durch das Stoppen eines
     Prozeßes generiert, da dieser im Hintergrund auf sein Steuerungstermi-
     nal zugreifen will [siehe termio(7)]. Ferner können Signale optional
     generiert werden, wenn ein Prozeß, nachdem er gestoppt wurde, wiede-
     raufgenommen wird, wenn sich der Status des Sohnprozesses ändert oder
     wenn am Steuerungsterminal Eingabe ansteht. Bei den meisten Signalen
     wird der empfangende Prozeß beendet, wenn keine Maßnahmen durchgeführt
     werden. Bei einigen Signalen wird der Prozeß, der das Signal empfängt,
     angehalten oder sie werden einfach gelöscht, falls vom Prozeß nicht
     anders angefordert. Mit Ausnahme von SIGKILL und SIGSTOP können Sig-
     nale mit dem Aufruf von signal entweder ignoriert werden oder sie kön-
     nen Interrupts an eine angegebene Stelle ausgeben. Es folgt eine Liste
     aller Signale mit den Namen aus der Include-Datei <signal.h>.

     SIGHUP          Hangup
     SIGINT          Interrupt
     SIGQUIT     *   Quit
     SIGILL      *   Ungültige Anweisung
     SIGTRAP     *   Ablaufverfolgungsunterbrechung
     SIGABRT     *   Abbruch [generiert durch die Routine abort(3C)]
     SIGEMT      *   Emulatorunterbrechung
     SIGFPE      *   Arithmetische Ausnahmebedingung
     SIGKILL         Kill (Abfangen, Blockieren, Ignorieren nicht möglich)
     SIGBUS      *   Busfehler
     SIGSEGV     *   Verletzung der Segmentierungsregeln
     SIGSYS      *   Ungültiges Argument in Systemaufruf
     SIGPIPE         Schreiben in eine Pipe oder anderen Socket ohne Leser
     SIGALRM         Alarm
     SIGTERM         Software-Beendigungssignal
     SIGURG      -   Dringende Bedingung in Socket
     SIGSTOP     +   Stop (Abfangen, Blockieren, Ignorieren nicht möglich)





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

signal(3-ucb)           (BSD Compatibility Package)           signal(3-ucb)

     SIGTSTP     +   Von der Tastatur generiertes Signal stoppen
     SIGCONT     -   Weiter nach Stopp (Blockieren nicht möglich)
     SIGCHLD     -   Sohnstatus hat sich geändert
     SIGTTIN     +   Lesen im Hintergrund vom Steuerungsterminal nicht möglich
     SIGTTOU     +   Schreiben im Hintergrund auf Steuerungsterminal nicht
                     möglich
     SIGIO       -   E/A auf Deskriptor möglich [siehe fcntl(2)]
     SIGXCPU         CPU-Zeitlimit überschritten [siehe setrlimit(2)]
     SIGXFSZ         Max. Dateigröße überschritten [siehe setrlimit(2)]
     SIGVTALRM       Alarm für virtuelle Prozeßzeit [siehe setitimer(3C)]
     SIGPROF         Alarm für Timer zur Profilerstellung [siehe setitimer(3C)]
     SIGWINCH    -   Fenster geändert [siehe termio(7)]
     SIGUSR1         Benutzerdefiniertes Signal 1
     SIGUSR2         Benutzerdefiniertes Signal 2

     Bei den Signalen, die in der Liste mit einem Stern "*" versehen sind,
     wird ein Speicherabzug erstellt, wenn sie nicht abgefangen oder igno-
     riert werden.

     Wenn func den Wert SIGDFL hat, wird die Standardaktion für das Signal
     sig wieder eingesetzt; hierbei handelt es sich im Normalfall um eine
     Beendigung (mit Speicherabzug bei den Signalen mit Stern), außer bei
     den Signalen, die mit "-" oder "+" markiert sind. Mit "-" markierte
     Signale werden gelöscht, wenn es sich um eine SIGDFL-Aktion handelt;
     bei mit "+" markierten Signalen wird der Prozeß angehalten. Wenn func
     den Wert SIGIGN hat, wird das Signal anschließend ignoriert und noch
     anstehende Wiederholungen dieses Signals werden gelöscht. Andernfalls
     werden beim Auftreten des Signals alle weiteren Vorkommnisse des Sig-
     nals blockiert und func wird aufgerufen.

     Bei einer Rückkehr von dieser Funktion wird die Blockierung des bear-
     beiteten Signals aufgehoben, und der Prozeß wird an der Stelle wiede-
     raufgenommen, an der er unterbrochen wurde.

     Wenn ein abgefangenes Signal bei bestimmten Systemaufrufen ausgegeben
     und dadurch der Aufruf vorzeitig beendet wird, wird dieser Aufruf
     automatisch neu gestartet. Dies kann zum Beispiel bei einem read- oder
     write-Aufruf auf einem langsamen Gerät (wie einem Terminal, jedoch
     nicht bei einer Datei) und während eines wait-Aufrufs auftreten.

     Der Wert von signal ist der vorherige (oder ursprüngliche) Wert von
     func für das entsprechende Signal.

     Nach fork oder vfork werden alle Signale von dem Sohnprozeß übernom-
     men. Ein execve setzt alle abgefangenen Signale auf ihre Standardak-
     tion zurück; ignorierte Signale werden weiterhin ignoriert.








Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

signal(3-ucb)           (BSD Compatibility Package)           signal(3-ucb)

HINWEISE
     Die Routine zur Signalbearbeitung kann folgendermaßen deklariert wer-
     den:

          void handler(sig, code, scp, addr);
          int sig, code;
          struct sigcontext *scp;
          char *addr;

     Dabei gilt folgendes:

     sig    Die Signalnummer.

     code   Ein Parameter bestimmter Signale, der zusätzliche Detailangaben
            enthält.

     scp    Ein Zeiger auf die Struktur sigcontext (definiert in
            <signal.h>), die zur Wiederherstellung des Kontextes in den
            Zustand vor dem Auftreten des Signals dient.

     addr   Zusätzliche Adreßinformationen.

RÜCKGABEWERT
     Bei einem erfolgreichen Aufruf wird die vorherige Aktion zurückgege-
     ben. Andernfalls wird -1 zurückgegeben, und errno wird gesetzt, um den
     Fehler anzuzeigen.

DIAGNOSE
     Bei folgender Bedingung schlägt signal fehl, und es erfolgt keine
     Aktion:

     EINVAL   sig ist entweder keine gültige Signalnummer oder ist das Sig-
              nal SIGKILL bzw. SIGSTOP.

SIEHE AUCH
     kill(1), execve(2), fcntl(2), fork(2), getrlimit(2), kill(2),
     ptrace(2), read(2), sigaction(2), wait(2), write(2), sigblock(3),
     sigpause(3), sigsetmask(3), sigstack(3), sigvec(3), wait3(3),
     getitimer(3C), setjmp(3C), setjmp(3C-ucb), signal(5), termio(7).















Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

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