NOM
gettimeofday, settimeofday - Lire/écrire l’heure actuelle.
SYNOPSIS
#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 fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
settimeofday() : _BSD_SOURCE
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 tv ou tz est nulle, la structure correspondante n’est ni remplie ni
renvoyée.
L’utilisation de la structure timezone est obsolète ; l’argument tz
doit en général être 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 Time - 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
gettimeofday et settimeofday renvoient 0 s’ils réussissent, ou -1 s’ils
échouent, auquel cas errno contient le code d’erreur.
ERREURS
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É
SVr4, BSD 4.3. POSIX.1-2001 décrit gettimeofday() mais pas
settimeofday(). POSIX.1-2008 marque gettimeofday() comme étant
obsolète, en recommandant d’utiliser clock_gettime(2) à la place.
NOTES
Traditionnellement, les champs de la structure timeval étaient de type
long.
VOIR AUSSI
date(1), adjtimex(2), time(2), ctime(3), ftime(3), capabilities(7),
time(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».