Wie stellen Sie eine genaue countdown-timer mit clock_gettime?

Könnte jemand bitte erklären, wie man einen countdown-timer mit clock_gettime, unter Linux. Ich weiß, Sie können verwenden Sie die clock () - Funktion, um die cpu-Zeit, und multiplizieren Sie es durch CLOCKS_PER_SEC um die tatsächliche Zeit, aber ich habe gehört, dass die clock () - Funktion ist nicht gut für diese geeignet.

So weit ich habe versucht diese (eine Milliarde ist die pause für eine Sekunde)

#include <stdio.h>
#include <time.h>

#define BILLION 1000000000

int main()
{
 struct timespec rawtime;
 clock_gettime(CLOCK_MONOTONIC_RAW, &rawtime);
 unsigned long int current =  ( rawtime.tv_sec + rawtime.tv_nsec );
 unsigned long int end =  (( rawtime.tv_sec + rawtime.tv_nsec ) + BILLION );
 while ( current < end )
 {
  clock_gettime(CLOCK_MONOTONIC_RAW, &rawtime);
  current =  ( rawtime.tv_sec + rawtime.tv_nsec );
 }

 return 0;
}

Ich weiß, das wäre nicht sehr nützlich, auf Ihre eigene, aber sobald ich herausgefunden habe, wie man Zeit richtig kann ich dieses in meine Projekte. Ich weiß, dass sleep() kann für diesen Zweck verwendet werden, aber ich möchte code der timer selbst damit kann ich mich besser integrieren es in meinem Projekte - wie beispielsweise die Möglichkeit der Rückkehr der Zeit, im Gegensatz zu pausieren, das ganze Programm.

  • Und ja, ich gelinkt habe es mit -lrt
  • Willkommen zum Programmierer. Bitte nehmen Sie sich einen Augenblick Zeit und Lesen Sie die Website FAQ wo Sie finden einige gute Informationen über die Fragen hier. Diese Frage ist wahrscheinlich besser gedient, SO wie es befasst sich mit der code-Implementierung. Bitte nicht wieder Fragen, es gibt, wie diese migriert werden können. Eine Allgemeine Regel ist, wenn Ihre Frage hat Sie vor Ihrer IDE es gehört SO. Wenn es Sie hat, vor einem whiteboard gehört es auf die Programmierer.
InformationsquelleAutor Joshun | 2012-12-16
Schreibe einen Kommentar