Frage #8

Wie kann ich die Ausführung meines Programmes für eine bestimmte Zeit lang unterbrechen?

Antwort:

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

Kleines Beispiel

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