Verzögerung in C

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Sleep(x); x steht für die Zeit in millisekunden (?). Funktioniert nur unter Windows.


User2432 
Beitragsersteller
 08.02.2011, 21:58

OHHH , ich hab das auch erst versucht , dachte aber es ist wie bei Quick Basic das die Zeit in sekunden ist und hab mich immer gewundert das es nicht funktioniert weil es gleich weiter geht.

thx

galatasaray06  08.02.2011, 21:58

Ups Frage nicht ganz gelesen, kann gelöscht werden.

sleep() gibt es sehr wohl, allerdings ist das ggf. zu ungenau (nur Sekundenintervalle sind möglich). usleep() ist genauer. Beides in unistd.h definiert.

Bei beidem handelt es sich um eine Mindest-Wartezeit (kann etwas länger werden). Außerdem kann die Wartezeit durch einen Interrupt vorzeitig beendet werden, man muss also gucken, ob lange genug gewartet wurde. Üblicherweise wird zum Messen der Zeit z.B. gettimeofday() verwendet.

Wenn es auf ganz präzises Timing ankommt verwendet man POSIX-Echtzeittimer.

In deinem Fall wie gesagt einfach sleep(10) verwenden, und ggf. nochmal "nachlegen", falls das Programm durch einen Interrupt vorzeitig "geweckt" wurde.


User2432 
Beitragsersteller
 08.02.2011, 22:58

öhm , das verwirrt mich jetzt ein wenig , durch die Antwort oben habe ich dann sleep(10000); geschrieben und er wartet exakt 10 sekunden. Und ich musste auch nicht unistd.h includiren...

Jetzt registrieren, um alle Antworten zu lesen!