Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel A Funktionsreferenz
  gp B.1 ANSI C
  gp B.2 ANSI C99
  gp B.3 Elementare E/A-Funktionen
  gp B.4 Fortgeschrittene Ein-/Ausgabe-Funktionen
  gp B.5 Verzeichnisse
  gp B.6 Attribute von Dateien und Verzeichnissen
  gp B.7 Links
  gp B.8 Prozess und Prozessverwaltungsfunktionen
  gp B.9 Signale – Das neue Signalkonzept
  gp B.10 Interprozesskommunikationen
  gp B.11 Sys-V-Interprozesskommnunikationen
  gp B.12 Threadprogrammierung
  gp B.13 Netzwerkprogrammierung
  gp B.14 MySQL C-API
  gp B.15 PostgreSQL C-API
  gp B.16 Weitere Funktionsreferenzen auf der Buch-CD


Rheinwerk Computing

B.9 Signale – Das neue Signalkonzept  downtop


Rheinwerk Computing

B.9.1 Signalmengen  downtop


Tabelle B.45    Manipulation von Signalmengen

Syntax Bedeutung
int sigemptyset(sigset_t *set); Signale aus der Signalmenge entfernen auf die set zeigt
int sigfillset(sigset_t *set); Signale zur Signalmenge hinzufügen auf die set zeigt
int sigaddset(sigset_t *set, int signum); Ein einzelnes Signal zur Signalmenge hinzufügen
int sigdelset(sigset_t *set, int signum); Ein einzelnes Signal aus der Signalmenge entfernen
int sigismember( const sigset_t *set, int signum); Testen ob ein bestimmtes Signal in der Signalmenge vorkommt


Rheinwerk Computing

B.9.2 (POSIX) Signalhandler-Funktionen  downtop


Tabelle B.46    Signalhandler-Funktionen

Syntax Bedeutung
int sigaction( int signum, const struct sigaction *act, struct sigaction *oldact); Erfragen und einrichten von Signalhandlern
int sigprocmask( int how, const sigset_t *set, sigset_t *oldset); Erfragen oder ändern der Signalmaske
int sigpending(sigset_t *set); Erfragen der Signale, die Blockieren (hängen)
int sigsuspend( const sigset_t *mask); Suspendieren des Prozesses während der Änderung der Signalmaske


Rheinwerk Computing

B.9.3 Übersicht zu den Signalen  downtop


Tabelle B.47    Signale, die meist bei Programmfehlern auftreten

Name Nr. Aktion verfügbar Bedeutung
SIGFPE 8 Core & Ende POSIX Problem bei einer Gleitkommaoperation (1.5/0)
SIGILL 4 Core & Ende POSIX Ungültige Instruktion wurde ausgeführt
SIGBUS 7 Core & Ende   Fehler auf dem System-Bus
SIGSYS 31 Core & Ende   ungültiges Argument bei System-Call
SIGEMT   Ende   Emulations-Trap
SIGTRAP 5 Core & Ende   Unterbrechung (Einzelschrittausführung)
SIGIOT   Core & Ende   wie SIGABRT
SIGABRT 6 Core & Ende POSIX Abnormale Beendigung
SIGSEGV 11 Core & Ende POSIX Speicherzugriff auf unerlaubten Speichersegment


Tabelle B.48    Signale, die den Prozess beenden

Name Nr. Aktion verfügbar Bedeutung
SIGTERM 15 Ende POSIX Programmende. Programme die TERM abfangen heißt das meistens, dass man mit kill() einen »friedlichen Shutdown« erzwingt.
SIGINT 2 Ende POSIX Interrupt der Dialogstation ((STRG)+(C))
SIGHUP 1 Ende POSIX Abbruch einer Dialogstationsleitung, bzw. Konfiguration neuladen für Dämons
SIGKILL 9 Ende POSIX Das Signal kill
SIGQUIT 3 Core & Ende POSIX Das Signal quit von einer Dialogstation


Tabelle B.49    Signale, die bei Beendigung eines Timers auftreten – Alarm

Name Nr. Aktion verfügbar Bedeutung
SIGALRM 14 Ende POSIX Zeituhr ist abgelaufen – alarm()
SIGVTALRM 26 Ende BSD, SVR4 Der virtuelle Wecker ist abgelaufen
SIGPROF 27 Ende   Timer zur Profileinstellung ist abgelaufen


Tabelle B.50    Asynchrone E/A-Signale

Name Nr. Aktion verfügbar Bedeutung
SIGIO 29 Ignoriert BSD, SVR4 Socket E/A ist möglich
SIGURG 23 Ignoriert BSD, SVR4 Dringender Socketstatus ist eingetreten
SIGPOLL   Ende SVR4 Ein anstehendes Ereignis bei Streams wird signalisiert


Tabelle B.51    Signale zur Prozesskontrolle

Name Nr. Aktion verfügbar Bedeutung
SIGCHLD 17 Ignoriert POSIX Der Kindprozess wurde beendet oder angehalten
SIGTTIN 21 Anhalten POSIX Prozess wollte aus einem Hintergrundprozess der Kontroll-Dialogstation lesen.
SIGTTOU 22 Anhalten POSIX Prozess wollte in einem Hintergrundprozess der Kontroll-Dialogstation schreiben.
SIGCLD   Ignoriert   wie SIGCHLD
SIGSTOP 19 Anhalten POSIX Der Prozess wurde angehalten
SIGTSTP 20 Anhalten POSIX Der Prozess wurde »von Hand« mit STOP anghalten
SIGCONT 18 Ignoriert POSIX Ein Angehaltener Prozess läuft weiter


Tabelle B.52    Signale, die bei Fehlern einer Operation ausgelöst werden

Name Nr. Aktion verfügbar Bedeutung
SIGPIPE 13 Ende POSIX Es wurde in eine Pipe geschrieben, woraus niemand liest. Es wurde versucht in eine Pipe mit O_NONBLOCK zu schreiben, woraus keiner liest. Bei nicht-NONBLOCK hält das Öffnen/Schreiben der Pipe auf.
SIGLOST   Ende   Eine Dateisperre ging verloren
SIGXCPU 24 Core & Ende BSD, SVR4 Maximale CPU-Zeit wurde überschritten
SIGXFSZ 25 Core & Ende BSD, SVR4 Maximale Dateigröße wurde überschritten


Tabelle B.53    Die restlichen Signale

Name Nr. Aktion verfügbar Bedeutung
SIGUSR1 SIGUSR2 10, 12 Ende POSIX frei zur eigenen Benutzung
SIGWINCH 28 Ignoriert BSD Window-Größe hat sich verändert


Rheinwerk Computing

B.9.4 Signale senden und Prozesse suspendieren  toptop


Tabelle B.54    Signale senden und Prozesse suspendieren

Syntax Bedeutung
int raise(int sig); Signal an den eigenen Prozess senden (ANSI C-konform). Gleichwertig zu kill(getpid(), sig);
int kill(pid_t pid, int sig); Signal an den eigenen oder auch einen anderen Prozess mit der PID pid senden.
unsigned int alarm( unsigned int seconds); Eine Alarm-Zeitschaltuhr einrichten, welche nach einer bestimmten Zeit (Sekunden) das Signal SIGALRM an den eigenen Prozess sendet.
int pause(void); Prozess suspendieren, bis ein Signal eintrifft.
unsigned int sleep( unsigned int sec); Prozess eine gewisse Zeit (Sekunden) supendieren oder bis ein Signal eintrifft.
int select( 0, NULL, NULL, NULL, struct timeval *timeout); Prozess eine gewisse Zeit (Sekunden und Mikrosekunden) supendieren oder bis ein Signal eintrifft.
int usleep(unsigned long usec); Prozess eine gewisse Zeit (Mikrosekunden) supendieren oder bis ein Signal eintrifft.
int nanosleep( const struct timespec *req, struct timespec *rem); Prozess eine gewisse Zeit (Sekunden und Nanosekunden eventuell möglich (Systemabhängig)) supendieren oder bis ein Signal eintrifft.

 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern