ein Kapitel zurück                                           ein Kapitel weiter

Eine Möglichkeit in einem Prozess einzugreifen haben wir mit der Funktion sleep. Mit dieser Funktion wird ein Prozess eine bestimmte Zeit oder bis zum Eintreffen eines Signals angehalten bzw. suspendieren. Der Syntax von sleep unter Linux/Unix ....

#include <unistd.h>

unsigned int sleep(unsigned int sekunden);

Die Funktion gibt 0 zurück oder die Anzahl der geschlafenen Sekunden. Jetzt der Syntax für DOS....

#include <dos.h>

void sleep(unsigned int sekunden);

Unter Windows selbst wird diese Funktion aber nicht funktionieren, da sleep eine DOS-Funktion ist. Schlimmer noch, bei einem 32bit-Programm hat diese Funktion einen Absturz zur folge. Verwenden sie bitte, sollten sie das Programm unter Windows (nicht MS-DOS) laufen lassen wollen, die Funktion Sleep(). Diese befindet sich in der Headerdatei <windows.h>. Allerdings handelt es dabei um Millisekunden-Zeiträume.

Wir wollen nun ein Programm schreiben das eine von Ihnen gewünschte Anzahl von Sekunden Rückwärts zählt....

/*Download:sleep.c*/
#ifdef __unix__ #include <unistd.h> #else #include <dos.h> #endif #include <stdio.h> int main() { int i,j; printf("Wie viele Sekunden wollen Rückwärtszählen : "); scanf("%d",&j); printf("Countdown : "); for(i=j; i>0; i--) { printf("%d",i); sleep(1); if(i==10) { printf("\b\b"); printf(" "); } else if(i<10) printf("\b"); else printf("\b\b"); } printf("\bBUMM\n"); return 0; }

Wir schicken unser Programm in die for - Schleife und halten nach jedem Durchgang unseren Prozess für 1 Sekunden an bis die Zeit zu Ende gezählt würde. Unter Linux/Unix ist es auch möglich den Prozess mit einem Signalhandler zu beenden. Dabei wird als Rückgabewert die Anzahl der nicht geschlafenen Sekunden gegeben.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf