Wie kann ich die Ausführung meines Programmes für eine bestimmte Zeit lang unterbrechen?
Mit der Funktion sleep
unter POSIX Systemen (Unix, Linux…) und mit Sleep
unter Windows.
#include <unistd.h> unsigned sleep( unsigned seconds );
#include <windows.h> void Sleep( DWORD Milliseconds );
Beachten müsst ihr, dass die POSIX Variante sleep
eine Angabe in Sekunden, die Windows Variante Sleep
eine Angabe in Millisekunden erwartet.
Die Funktionsweise hinter den beiden Funktionen ist jedoch gleich: Die Ausführung des aktuellen Threads wird unterbrochen, in diesem Fall kann man wirklich von „schlafen“ sprechen. Aus diesem Grund benutzt sleep
wie auch Sleep
nicht innerhalb von Ereignisschleifen, wie sie in diversen GUI-Toolkits vorhanden sind. Denn während der Thread schläft werden keine Signale mehr empfangen und die Anwendung „friert ein“.
POSIX
#include <stdio.h> #include <unistd.h> int main(int argc, char* argv[]) { printf("Hallo!, in 5 Sekunden wird dieses Programm beendet...\n"); sleep(5); printf("Ende\n"); return 0; }
Windows
#include <stdio.h> #include <windows.h> int main(int argc, char* argv[]) { printf("Hallo!, in 5 Sekunden wird dieses Programm beendet...\n"); Sleep(5000); printf("Ende\n"); return 0; }
Zurück zur FAQ-Übersicht