Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]
GETTIMEOFDAY
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- NOTES
- CONFORMITÉ
- VOIR AUSSI
- TRADUCTION
NOM
gettimeofday, settimeofday - Lire/écrire l'heure actuelle.
SYNOPSIS
#include <sys/time.h>
#include <time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv , const struct timezone
*tz);
DESCRIPTION
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 suivantes permettent de manipuler les structures timeval :
#define timerisset(tvp)rs
((tvp)->tv_sec || (tvp)->tv_usec)
#define timercmp(tvp, uvp, cmp)rs
((tvp)->tv_sec cmp (uvp)->tv_sec ||rs
(tvp)->tv_sec == (uvp)->tv_sec &&rs
(tvp)->tv_usec cmp (uvp)->tv_usec)
#define timerclear(tvp)rs
((tvp)->tv_sec = (tvp)->tv_usec = 0)
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.
NOTES
Le prototype de settimeofday() et les définitions de timercmp,
timerisset, timerclear, timeradd, timersub sont (depuis glibc 2.2.2) disponibles uniquement si _BSD_SOURCE est définie.
Traditionnellement, les champs de la structure timeval étaient des longs.
CONFORMITÉ
SVr4, BSD 4.3. POSIX.1-2001 décrit gettimeofday() mais pas
settimeofday().
VOIR AUSSI
date(1), adjtimex(2), time(2), ctime(3), ftime(3),
capabilities(7), time(7)
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|