settimeofday(2) Lire/écrire l'heure actuelle

Other Alias

gettimeofday

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 (consultez feature_test_macros(7)) :

settimeofday() : _BSD_SOURCE

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 l'époque (consultez 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. (Cependant, des avertissements à la compilation seront émis si tv est NULL.

L'utilisation de la structure timezone est obsolète ; le paramètre tz doit normalement être NULL. Consultez la section NOTES ci-dessous.

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, le champ tz_dsttime doit être nul). 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é.

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

L'heure renvoyée par gettimeofday() est concernée par les sauts discontinus de l'heure système (c'est-à-dire si l'administrateur modifie l'heure système lui-même). Si vous devez incrémenter l'horloge de façon monotone, consultez clock_gettime(2).

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

Traditionnellement, les champs de la structure timeval étaient de type long.

Le champ tz_dsttime n'a jamais été utilisé sous Linux, c'est pourquoi le paragraphe ci-dessous n'est présent qu'à but historique.

Sur d'anciens systèmes, 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.

COLOPHON

Cette page fait partie de la publication 3.65 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

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <[email protected]> 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> ».