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 8 Signale
  gp 8.1 Grundlage zu den Signalen
    gp 8.1.1 Signalmaske
    gp 8.1.2 Signale und fork()
    gp 8.1.3 Signale und exec
    gp 8.1.4 Übersicht zu den Signalen
  gp 8.2 Das neue Signalkonzept
    gp 8.2.1 Wozu ein »neues« Signalkonzept?
  gp 8.3 Signalmenge initialisieren
  gp 8.4 Signalmenge hinzufügen oder löschen
  gp 8.5 Signale einrichten oder erfragen
    gp 8.5.1 Einen Signalhandler einrichten, der zurückkehrt
  gp 8.6 Signal an den eigenen Prozess senden – raise()
  gp 8.7 Signale an andere Prozesse senden – kill()
  gp 8.8 Zeitschaltuhr einrichten – alarm()
  gp 8.9 Prozesse stoppen, bis ein Signal eintritt – pause()
  gp 8.10 Prozesse für eine bestimmte Zeit stoppen – sleep() und usleep()
  gp 8.11 Signalmaske erfragen oder ändern – sigprocmask()
  gp 8.12 Prozess während einer Änderung der Signalmaske stoppen – sigsuspend()
  gp 8.13 Prozesse synchronisieren


Rheinwerk Computing

8.10 Prozesse für eine bestimmte Zeit stoppen – sleep() und usleep()  toptop

Muss ein Prozess nur für eine gewisse Zeit oder bis zum Eintreffen eines Signals suspendiert werden, können die Funktionen sleep() bzw. usleep() dazu verwendet werden.

#include <unistd. h.>
unsigned int sleep(unsigned int sekunden);
void usleep(unsigned long mikrosekunden);

Damit wird ein Prozess jeweils in den Parametern der angegebenen Zeiten angehalten. Bei sleep() handelt es sich um Sekunden und bei usleep() um Mikrosekunden. Wird ein suspendierter Prozess durch ein Signal vorzeitig beendet und mit einem Signalhandler abgefangen, gibt sleep() als Rückgabewert die Anzahl der nicht geschlafenen Sekunden zurück.


Hinweis   Weitere Möglichkeiten zum zeitlichen Suspendieren von Prozessen haben Sie noch mit den Funktionen select() und nanosleep().


Die maximale Präzision, die bei der Suspension erreicht werden kann, hängt vom System und von der Methodik ab. Auf den meisten Linux-Systemen ist dies 1/100s, bei einigen 64-Bit-Rechnern auch 1/1024s. Wer es noch präziser braucht, kann dies über sched_setpriority() (und dann nanosleep()) realisieren, jedoch heißt eine Präzision, die genauer ist als der Standardwert (1/100s), dass während der Suspension andere Prozesse nicht ans Laufen kommen! Eine Anwendung, die also periodisch weniger als 1/100s mittels der Sleep-Funktionen auf ein Ereignis warten würde, würde die CPU kaum noch freigeben. Busy Loops (z. B. eine while()-Schleife) blockieren zwar nicht, jedoch ist die zeitliche Länge einer solchen Schleife natürlich abhängig von der Prozessorgeschwindigkeit und -auslastung, weshalb sie für eine Suspension generell nicht geeignet ist. Anders ausgedrückt: Es gibt keine perfekte Lösung, außer dass man manuell den Kernel auf 1/1000s hochstellen kann, wie es standardmäßig in 2.6 jetzt gemacht worden ist.

 << 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