siginfo(5) siginfo(5)
NAME
siginfo - Informationen über Signalerzeugung
SYNTAX
#include <siginfo.h>
BESCHREIBUNG
Wenn ein Prozeß ein Signal empfängt, können Informationen abgefragt
werden, die Auskunft darüber geben, warum das System ein Signal gene-
riert hat [siehe sigaction(2)]. Wenn ein Prozeß seine Sohnprozesse
überwacht, können Informationen darüber eingeholt werden, warum ein
Sohnprozeß seinen Zustand geändert hat [siehe waitid(2)]. In jedem
Fall liefert das System die Informationen in einer Struktur vom Typ
siginfot zurück, welche die folgenden Informationen enthält:
int sisigno /* Signalnummer */
int sierrno /* Fehlernummer */
int sicode /* Signalcode */
sisigno enthält die vom System erzeugte Signalnummer. (Bei der Funk-
tion waitid(2) ist sisigno immer SIGCHLD.)
Wenn sierrno ungleich Null ist, stellt der Wert eine Fehlernummer
dar, welche mit dem Signal verknüpft ist; diese Fehlernummer wird in
errno.h definiert.
sicode enthält einen Code, der die Ursache des Signals beschreibt.
Wenn der Wert von sicode kleiner oder gleich 0 ist, wurde das Signal
von einem Benutzerprozeß erzeugt [siehe kill(2) und sigsend(2)], und
die Struktur siginfo enthält die folgenden weiteren Informationen:
pidt sipid /* Prozeßnummer des Senders */
uidt siuid /* Benutzernummer des Senders */
Ansonsten enthält sicode einen signalspezifischen Grund für die Sig-
nalerzeugung:
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
siginfo(5) siginfo(5)
______________________________________________________________________
| Signal | Code | Grund |
|__________|_________________|________________________________________|
| SIGILL | ILLILLOPC | ungültige Prozessor-Anweisung |
| | ILLILLOPN | ungültiger Operand |
| | ILLILLADR | ungültiger Adressierungsmodus |
| | ILLILLTRP | ungültige Unterbrechung |
| | ILLPRVOPC | privilegierte Prozessor-Anweisung |
| | ILLPRVREG | privilegiertes Register |
| | ILLCOPROC | Fehler des Coprozessors |
| | ILLBADSTK | interner Stapelfehler |
|__________|_________________|________________________________________|
| SIGFPE | FPEINTDIV | ganzzahlige Division durch Null |
| | FPEINTOVF | ganzzahliger Überlauf |
| | FPEFLTDIV | Gleitkommadivision durch Null |
| | FPEFLTOVF | Gleitkommaüberlauf |
| | FPEFLTUND | Gleitkommaunterlauf |
| | FPEFLTRES | ungenaues Gleitkommaergebnis |
| | FPEFLTINV | ungültige Gleitkommaoperation |
| | FPEFLTSUB | Index außerhalb des gültigen Bereichs |
|__________|_________________|________________________________________|
| SIGSEGV | SEGVMAPERR | Adresse nicht auf Objekt abgebildet |
| | SEGVACCERR | ungültige Zugriffsrechte für |
| | | abgebildetes Objekt |
|__________|_________________|________________________________________|
| SIGBUS | BUSADRALN | ungültige Adreßzuweisung |
| | BUSADRERR | nichtexistierende physische Adresse |
| | BUSOBJERR | objektspezifischer Hardwarefehler |
|__________|_________________|________________________________________|
| SIGTRAP | TRAPBRKPT | Prozeß-Haltepunkt |
| | TRAPTRACE | Prozeß-Trace-Unterbrechung |
|__________|_________________|________________________________________|
| SIGCHLD | CLDEXITED | Sohnprozeß über exit beendet |
| | CLDKILLED | Sohnprozeß über kill beendet |
| | CLDDUMPED | Sohnprozeß nicht normal beendet |
| | CLDTRAPPED | überwachter Sohnprozeß empfing Signal |
| | CLDSTOPPED | Sohnprozeß angehalten |
| | CLDCONTINUED | angehaltener Sohnprozeß läuft weiter |
|__________|_________________|________________________________________|
| SIGPOLL | POLLIN | Dateneingabe verfügbar |
| | POLLOUT | Ausgabepuffer verfügbar |
| | POLLMSG | Eingabemeldungen verfügbar |
| | POLLERR | E/A-Fehler |
| | POLLPRI | Eingabe mit hoher Priorität verfügbar |
| | POLLHUP | Verbindung mit Gerät abgebrochen |
|__________|_________________|________________________________________|
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
siginfo(5) siginfo(5)
Für Signale, die vom Kernel generiert werden, sind folgende signalab-
hängige Informationen verfügbar:
______________________________________________________________________
| Signal | Feld | Wert |
|________|_________________|__________________________________________|
| SIGILL | caddrt siaddr | Adresse der fehlerhaften Anweisung |
| SIGFPE | | |
|________|_________________|__________________________________________|
| SIGSEGV| caddrt siaddr | Adresse des fehlerhaften Speicherzugriffs|
| SIGBUS | | |
|________|_________________|__________________________________________|
| SIGCHLD| pidt sipid | Prozeßnummer des Sohnprozesses |
| | int sistatus | Exit-Wert oder Signal |
|________|_________________|__________________________________________|
| SIGPOLL| long siband | Band-Ereignis für POLLIN, POLLOUT |
| | | oder POLLMSG |
|________|_________________|__________________________________________|
HINWEISE
Für SIGCHLD-Signale ist sistatus gleich dem Exit-Wert von Prozessen,
sofern sicode gleich CLDEXITED ist; ansonsten wird der Wert des Sig-
nals angenommen, welches den Prozeß dazu veranlaßt hat, den Zustand zu
ändern. Bei einigen Implementierungen ist der exakte Wert von siaddr
nicht verfügbar; in diesem Fall ist siaddr garantiert auf derselben
Seite wie die fehlerhafte Anweisung oder der fehlerhafte Speicherzu-
griff.
SIEHE AUCH
sigaction(2), waitid(2), signal(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98