IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

différence struct timespec


Sujet :

Linux

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut différence struct timespec
    Bonjour tout le monde,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Points : 133
    Points
    133
    Par défaut réponse
    Ok, j'avoue j'étais paresseux cette solution devrais fonctionner, je teste dès que possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ((t2.tv_nsec > t1.tv_nsec)) {
        diff.tv_sec = t2.tv_sec - t1.tv_sec;
        diff.tv_nsec = t2.tv_nsec - t1.tv_nsec;
    } else {
        diff.tv_sec = t2.tv_sec - t1.tv_sec - 1;
        diff.tv_nsec = 1000000000 - t2.tv_nsec + t1.tv_nsec;
    }

Discussions similaires

  1. Jeu des différences (struct)
    Par Astraya dans le forum C++
    Réponses: 4
    Dernier message: 03/10/2013, 16h43
  2. [Débutant] Différences class/struct C#
    Par simong dans le forum C#
    Réponses: 13
    Dernier message: 07/09/2011, 12h11
  3. Réponses: 7
    Dernier message: 18/02/2010, 11h25
  4. Différence de syntaxe dans la déclaration struct
    Par GreatDeveloperOnizuka dans le forum C
    Réponses: 6
    Dernier message: 25/01/2009, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo