zweite Nanosekunden - struct itimerspec

bin ich Auffüllen der timespec-Struktur. Die Absicht ist es, Benutzer wird immer die Eingabe von Werten in Sekunden (0,01 Sekunden), so sind wir die Umwandlung, die die Sekunden bis Nanosekunden mit: lt_leak_start = atoll(getenv("LT_LEAK_START")) * sec_to_nsec; wo variable static long sec_to_nsec = 1000000000; und dann verwenden Sie es als ein argument für settime: timer_settime(timerid,0,&its,NULL). Aber Sie tun es auf eine Fehlermeldung tritt auf: settimer failed: Invalid argument

Bitte helfen Sie mir.

Vielen Dank im Voraus.

enter code here
 struct timespec {            
    time_t tv_sec;    /* Seconds */            
    long   tv_nsec;  /* Nanoseconds */      
  };         

 struct itimerspec {            
   struct timespec it_interval;  /* Timer interval */            
   struct timespec it_value;     /* Initial expiration */        
 }; 

Den code, den ich versuche ist hier:

static long sec_to_nsec = 1000000000;
lt_leak_start = atoll(getenv("LT_LEAK_START")) * sec_to_nsec;

/* Setting timer interval */

its.it_interval.tv_sec=0;
its.it_interval.tv_nsec=1;

/* Setting timer expiration */

its.it_value.tv_sec=0;  //First expiry after 1 sec
its.it_value.tv_nsec=lt_leak_start;

timer_create(CLOCK_REALTIME,&sevp,&timerid);

if(timer_settime(timerid,0,&its,NULL)==-1) {
  perror("settimer failed");
  exit(1);
}
Sind Sie sicher, dass timer_create gearbeitet? Du bist nicht die überprüfung seiner Rückkehr Wert.
Ja, es hat funktioniert. Ich überprüfte die Rücksendung Wert. Für Einfachheit habe ich nicht, alle diejenigen, die hier. Die Fehlermeldung ist in timer_settime Funktion, nicht timer_create.
Warum bist du unter einen Wert in Sekunden und konvertieren Sie es in den Nanosekunden-wenn Sie können einfach speichern Sie Sie direkt in timespec.tv_sec ?
Dies ist, weil timespec.tv_sec nicht gebrochene Werte.
Sie haben keine Bruchzahlen. Sie arbeiten mit Umgebungsvariablen, die Sie behandeln, als ganze Sekunden, und speichern Sie Sie direkt in die tv_sec Feld.

InformationsquelleAutor kingsmasher1 | 2011-03-28

Schreibe einen Kommentar