gettimeofday(2) System Calls Manual gettimeofday(2) NOM gettimeofday, settimeofday - Lire/ecrire l'heure actuelle BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int gettimeofday(struct timeval *restrict tv, struct timezone *_Nullable restrict tz); int settimeofday(const struct timeval *tv, const struct timezone *_Nullable tz); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : settimeofday() : Depuis la glibc 2.19 : _DEFAULT_SOURCE glibc 2.19 et anterieures : _BSD_SOURCE DESCRIPTION Les fonctions gettimeofday() et settimeofday() servent a lire ou programmer l'heure ainsi que le fuseau horaire (timezone). L'argument tv est une structure timeval (comme indique dans ) : struct timeval { time_t tv_sec; /* secondes */ suseconds_t tv_usec; /* microsecondes */ }; et donne le nombre de secondes et microsecondes ecoulees depuis l'epoch (consultez time(2)). L'argument tz est une structure timezone : struct timezone { int tz_minuteswest; /* minutes a l'ouest de Greenwich */ int tz_dsttime; /* type de changement d'heure d'ete */ }; Si tv ou tz est NULL, la structure correspondante n'est ni remplie ni renvoyee. (Cependant, des avertissements a la compilation seront emis si tv est NULL.) L'utilisation de la structure timezone est obsolete ; le parametre tz doit normalement etre NULL. Consultez la section NOTES ci-dessous. Sous Linux, il existe une semantique particuliere associee a l'appel systeme settimeofday() si durant la premiere invocation (apres l'amorcage) il a un argument tz non NULL, l'argument tv est NULL et le champ tz_minuteswest est different de zero (dans ce cas, le champ tz_dsttime doit etre nul). Dans ce cas, on suppose que l'horloge CMOS de la machine est configuree sur l'heure locale, et qu'on doit l'augmenter de cette valeur pour obtenir l'heure UTC. Bien entendu, il faut eviter autant que possible d'utiliser cette particularite. VALEUR RENVOYEE gettimeofday et settimeofday renvoient 0 s'ils reussissent, ou -1 s'ils echouent, auquel cas errno est positionne pour indiquer l'erreur. ERREURS EFAULT tv ou tz pointent en dehors de l'espace d'adressage autorise. EINVAL (settimeofday()) : timezone n'est pas valable. EINVAL (settimeofday()) : tv.tv_sec est negatif ou tv.tv_usec depasse l'intervalle [0-999999]. EINVAL (depuis Linux 4.3) (settimeofday()) : tentative de positionner l'heure sur une valeur inferieure a l'heure actuelle de l'horloge CLOCK_MONOTONIC (voir clock_gettime(2)). EPERM Le processus appelant n'a pas les privileges suffisants pour appeler settimeofday() ; sous Linux, la capacite CAP_SYS_TIME est necessaire. VERSIONS Differences entre bibliotheque C et noyau Sur certaines architectures, une implementation de gettimeofday() est fournie dans vdso(7). Le noyau accepte NULL pour a la fois tv et tz. L'argument timezone est ignore par glibc et musl et n'est pas passe depuis ou vers le noyau. Bionic d'Android passe l'argument timezone depuis ou vers le noyau, mais Android ne met pas a jour le fuseau horaire en se basant sur le fuseau horaire dans les Parametres, ainsi le fuseau horaire du noyau est habituellement UTC. STANDARDS gettimeofday() POSIX.1-2008 (obsolete). settimeofday() Aucun. HISTORIQUE SVr4, 4.3BSD. POSIX.1-2001 decrit gettimeofday() mais pas settimeofday(). POSIX.1-2008 marque gettimeofday() comme etant obsolete, en recommandant d'utiliser clock_gettime(2) a la place. Traditionnellement, les champs de la structure timeval etaient de type long. Le champ tz_dsttime Sur un noyau non Linux, avec la glibc, le champ tz_dsttime de la structure timezone sera positionne sur une valeur non nulle par gettimeofday() si il a ete applique ou sera applique au fuseau horaire actuel une regle de sauvegarde d'heure d'ete. Dans ce sens, elle reflete exactement la signification de daylight(3) pour la zone actuelle. Sur Linux avec la glibc, le positionnement du champ tz_dsttime de la structure timezone n'a jamais ete utilise par settimeofday() ou gettimeofday(). Ainsi, ce qui suit n'a qu'un interet historique. Sur d'anciens systemes, le champ tz_dsttime contient une constante symbolique (dont les valeurs sont fournies ci-dessous) qui indique quelle partie du changement d'heure d'ete annuel est en cours. (Remarque : cette valeur est constante tout au long de l'annee, elle n'indique pas reellement la valeur que cette heure d'ete est en cours, elle selectionne un algorithme). Les changements d'heure d'ete (Daylight Saving Time - DST) sont definis comme suit : DST_NONE /* pas sur DST */ DST_USA /* DST a l'americaine */ DST_AUST /* DST a l'australienne */ DST_WET /* DST d'Europe occidentale */ DST_MET /* DST d'Europe centrale */ DST_EET /* DST d'Europe de l'Est */ DST_CAN /* Canada */ DST_GB /* Grande-Bretagne et Irlande */ DST_RUM /* Roumanie */ DST_TUR /* Turquie */ DST_AUSTALT /* Style australien avec changement en 1986 */ Il est evident que la periode de l'heure d'ete en cours ne peut pas etre uniquement fournie par un algorithme par pays. Ce decalage depend de decisions politiques imprevisibles. Aussi, cette methode de representation des fuseaux horaires a ete abandonnee. NOTES L'heure renvoyee par gettimeofday() est concernee par les sauts discontinus de l'heure systeme (c'est-a-dire si l'administrateur modifie l'heure systeme lui-meme). Si vous devez incrementer l'horloge de facon monotone, consultez clock_gettime(2). Les macros operant sur les structures timeval sont decrites dans timeradd(3). VOIR AUSSI date(1), adjtimex(2), clock_gettime(2), time(2), ctime(3), ftime(3), timeradd(3), capabilities(7), time(7), vdso(7), hwclock(8) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 gettimeofday(2)