différence struct timespec
Bonjour tout le monde,
Code:
1 2 3 4 5 6 7 8 9 10
|
struct timespec
{
time_t tv_sec; /* secondes */
long tv_nsec; /* nano-secondes */
};
struct timespec t1;
struct timespec t2;
struct timespec diff; |
Voilà, j'ai deux varibles de type struct timespec t1 et t2 avec t2 > t1 (c'est à dire que t2 est plus éloigné de l'origine que t1). Je voudrais calculer la différence de temps entre ces deux valeurs et stocker le résultat dans une struct timespec. Quelq'un a t-il une idée ?
J'ai pensé convertir le tout en nano secondes, faire la soustraction et reconvertir, mais ça ne fonctionne pas, puisque dans la convertion il peut y avoir un dépassement de la valeur entière maximale en multipliant un nombre élevé de seconde par 10^9. Evidemment la soustraction immédiate ne peut pas être employée à cause du cas trivial suivant.
Code:
1 2 3 4 5 6
|
t1.tv_sec = 1135296000;
t1.tv_nsec = 156789;
t2.tv_sec = 1135296005; // on a bien t2 > t1 mais la soustraction "simple"
t2.tv_nsec = 45321; // donnerait une valeur erronées pour les sec et nsec |
merci pour toutes vos suggestions.