Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Inscrit en
    janvier 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 26
    Points : 1
    Points
    1

    Par défaut Gestion des fuseaux horaires(time.h et timezone)sous Linux

    Bonjour,

    Je rencontre des difficultés avec la gestion des fuseaux horaires dans mon appli linux en C.

    Pour afficher le temps dans mon appli j'utilise :

    Code :
    1
    2
    	date = time(NULL);
    	printf("%s",ctime(&date));
    J'ai correctement positionné la variable d'env TZ de mon OS :
    Code :
    1
    2
    ~# echo $TZ
    CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00
    Lorsque je lance mon appli manuellement, l'heure affiché correspond bien à mon fuseau horaire. Par contre, je souhaite que cette appli tourne comme un deamon j'ai donc configuré /etc/rc.d/rc.local de mon os comme ceci:

    Code :
    1
    2
    3
    4
    5
    ~# cat /etc/rc.d/rc.local 
    # !/bin/sh
    # Add you want to run daemon
    /home/localtime.sh
    /home/rs &
    localtime.sh contenant un export de TZ et une redirection de la commande date dans un fichier, afin de vérifier que la date du système est bien la bonne avant que mon appli ne soit lancée. Le problème est que la date et le fuseau horaire de mon OS sont donc bien corrects mais mon appli n'affiche PAS le bon fuseau horaire!

    D'où peut venir le problème ?

    Merci,

  2. #2
    Expert Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 189
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 189
    Points : 14 369
    Points
    14 369

    Par défaut

    simplement parce que ton script change le fuseau du processus (environnement) et pas du système (heureusement).

    Il suffit soit de le faire dans le même script, soit de le passer en paramètre....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Invité de passage
    Inscrit en
    janvier 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 26
    Points : 1
    Points
    1

    Par défaut

    OK pour l'explication mais je ne comprends pas comment mettre ça en place.
    En paramètre de quoi ? Comment puis je faire pour changer le fuseau horaire du système avant le démarrage de mon programme ?

    En fait je pense que tu voulais dire mettre le contenu du script localtime.sh dans le script rc.local mais n'y a t il pas un autre moyen ?

  4. #4
    Expert Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 189
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 189
    Points : 14 369
    Points
    14 369

    Par défaut

    si..

    Dans ton programme C :

    getenv
    setenv

    et tu passes la zone que tu veux en paramètre
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •