![]() |
|
|
SignaleEin Prozess kann von außen mittels kill-Befehl Signale empfangen. Normalerweise endet der Prozess, wenn er ein solches Signal bekommt. Man kann Programme auch so schreiben, dass sie durch einen Signalbehandler auf die Signale reagieren.
Der Funktion
#include <signal.h> signal(int signalnr, void (*signalfunktion)(int)); Ein Signal, auf das ein Programm immer reagieren sollte ist SIGTERM. Er wird z. B. beim Herunterfahren des Systems an jeden Prozess gesandt. Die typische Reaktion sollte es sein, die Aktivitäten schnellstmöglich einzustellen und einen konsistenten Zustand der Daten zu gewährleisten. Dafür hat der Prozess im Falle des Herunterfahrens höchstens 5 Sekunden Zeit. Dann wird er durch einen SIGKILL endgültig zerlegt. Besonders bei Hintergrundprozessen ist es inzwischen üblich, das SIGHUP"-Signal zu verwenden, um den Prozess dazu zu bewegen, Konfigurationsdateien neu zu lesen. So ist es möglich, Einstellungen zu ändern, ohne den Betrieb zu unterbrechen. Tabelle benennt alle Signalkonstanten, die der erste Parameter annehmen kann.
[Signale]L|L
Name & Bedeutung
Die eingeklammerten Zahlen sind die Nummern der Signale, soweit sie über die Systeme hinweg einheitlich sind. Das folgende Programm fängt das Signal SIGHUP und gibt bei jedem kill eine Meldung auf dem Bildschirm aus.
[SIGHUP-Signal fangen] #include <signal.h>
void SigHandler(int Nr) { puts("Signal gefangen"); }
main() { signal(SIGHUP, SigHandler); for (;;) ; }
|
|
Copyright © Rheinwerk Verlag GmbH 2003
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