gettimeofday   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 27 juillet 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
gettimeofday, settimeofday - Lire/écrire l'heure actuelle  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <sys/time.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);

int settimeofday(const struct timeval *tv, const struct timezone *tz);

Exigences de macros de test de fonctionalités pour la glibc (voir feature_test_macros(7)) :

settimeofday() : _BSD_SOURCE  




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Les fonctions gettimeofday() et settimeofday() servent à lire ou programmer l'heure ainsi que le fuseau horaire (timezone). L'argument tv est une structure timeval (décrite dans <sys/time.h>) :

struct timeval {
    time_t      tv_sec;  /* secondes */
    suseconds_t tv_usec; /* microsecondes */
};

et donne le nombre de secondes et microsecondes écoulées depuis le 1er janvier 1970 (voir time(2)). L'argument tz est une structure timezone composée ainsi :

struct timezone {
    int tz_minuteswest; /* minutes à l'ouest de Greenwich  */
    int tz_dsttime;     /* type de changement horaire      */
};

Si soit tv soit tz est NULL, la structure correspondante n'est pas remplit ou renvoyée.

L'utilisation de la structure timezone obsolète ; l'argument tz devrait normalement être spécifié comme NULL. Le champ tz_dsttime n'a jamais été utilisé sous Linux, il n'a jamais été géré, et ne le sera jamais par la libc ou glibc. Toute occurrence de ce champ dans les sources du noyau (sauf pour les déclarations) est un bogue. Ainsi le paragraphe suivant n'a qu'un intérêt historique.

Le champ tz_dsttime contient une constante symbolique (dont les valeurs sont fournies ci-dessous) qui indique quelle partie du changement horaire annuel est en cours. (Remarque : cette valeur est constante tout au long de l'année, elle n'indique pas réellement la valeur horaire en cours, elle sélectionne un algorithme). Les changements horaires (Daylight saving - DST) sont définis comme suit :


DST_NONE    /* Aucun */

DST_USA /* USA */
DST_AUST /* Australie */
DST_WET /* Europe occidentale */
DST_MET /* Europe centrale */
DST_EET /* Europe Orientale */
DST_CAN /* Canada */
DST_GB /* Grande-Bretagne et Irlande */
DST_RUM /* Roumanie */
DST_TUR /* Turquie */
DST_AUSTALT /* Australie avec décalage en 1986 */

Il est évident que le décalage horaire en cours ne peut pas être uniquement fourni par un algorithme par pays. Ce décalage dépend de décisions politiques imprévisibles. Ainsi, cette méthode des fuseaux horaires a été abandonnée. Sous Linux, durant un appel à settimeofday() le champ tz_dsttime doit être nul.

Sous Linux, il existe une sémantique particulière associée à l'appel système settimeofday() si, durant la première invocation (après le boot), il a un argument tz non NULL, un argument tv NULL et un champ tz_minuteswest différent de zéro. Dans ce cas, on suppose que l'horloge CMOS de la machine est configurée sur le temps local, et que l'on doit l'augmenter de cette valeur pour obtenir le temps UTC. Bien entendu, il faut éviter autant que possible d'utiliser cette particularité.

Les macros opérant sur les structures timeval sont décrites dans timeradd(3).  




VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
gettimeofday() et settimeofday() renvoient 0 s'ils réussissent, ou -1 s'ils échouent, auquel cas errno contient le code d'erreur.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
EFAULT
tv ou tz pointent en dehors de l'espace d'adressage autorisé.
EINVAL
le fuseau horaire (ou autre chose) est invalide.
EPERM
Le processus appelant n'a pas les privilèges suffisant pour appeler settimeofday() ; sous Linux, la capacité CAP_SYS_TIME est nécessaire.
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
SVr4, BSD 4.3. POSIX.1-2001 décrit gettimeofday() mais pas settimeofday().  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Traditionnellement, les champs de la structure timeval étaient des longs.  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
date(1), adjtimex(2), time(2), ctime(3), ftime(3), capabilities(7), time(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 10 octobre 1996 et révisée le 14 janvier 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 gettimeofday ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EFAULTERREURS
EINVALERREURS
EPERMERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:49:29, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional