utime

Autres langues

Langue: fr

Version: 10 octobre 2004 (mandriva - 01/05/08)

Autres sections - même nom

Section: 2 (Appels système)

NOM

utime, utimes - Changer la date d'accès ou de modification d'un i-noeud

SYNOPSIS

 #include <sys/types.h>
 
#include <utime.h> int utime(const char *filename, const struct utimbuf *buf); #include <sys/time.h> int utimes(const char *filename, const struct timeval times[2]);

DESCRIPTION

utime() modifie les dates d'accès et de modification de l'i-noeud indiqué par filename pour les valeurs contenues respectivement dans les champs actime et modtime de buf. Si buf est NULL, les dates d'accès et de modification sont mises à la date actuelle.

La modification des horodatages est permise lorsque soit le processus a les privilèges appropriés (sous Linux : avoir la capacité CAP_FOWNER) soit l'UID effectif est égal à l'UID du fichier, soit buf est nul et le processus a la permission d'écriture sur le fichier. La structure utimbuf est la suivante :

 struct utimbuf {
     time_t actime;  /* heure d'accès  */
     time_t modtime; /* heure de modification */
 };
 

La fonction utime() permet des spécifications d'horodatage avec une résolution d'une seconde. La fonction utimes() est similaire mais permet un résolution d'une microseconde. Ici, times[0] fait référence à l'heure d'accès, et times[1] à l'heure de modification. La structure timeval est la suivante :

 struct timeval {
     long    tv_sec;         /* secondes      */
     long    tv_usec;        /* microsecondes */
 };
 

VALEUR RENVOYÉE

utime et utimes renvoient 0 s'ils réussissent ou -1 s'ils échouent auquel cas errno contient le code d'erreur.

ERREURS

Plusieurs erreurs peuvent se produire, les plus courantes étant :
EACCES
La permission de parcours est refusée pour l'un des répertoires du chemin path (voir aussi path_resolution(7)), ou buf est nul et le processus n'a pas l'autorisation de modifier les horodatages (voir plus haut).
ENOENT
filename n'existe pas.
EPERM
buf n'est pas nul et le processus n'a pas l'autorisation de modifier les horodatages.
EROFS
path se trouve sur un système de fichiers en lecture seule.

CONFORMITÉ

utime() : SVr4, POSIX.1-2001.
utimes() : BSD 4.3.

NOTES

Linux n'autorise pas la modification d'horodatages sur les fichiers immuables, ou l'horodatage avec autre chose que la date courante sur les fichiers en ajout seulement.

Dans libc4 et libc5, utimes() est juste une enveloppe à utime() et ne permet donc pas des résolutions inférieure à la seconde.

POSIX.1-2001 considère utimes() comme un héritage du passé, ce qui est étrange puisqu'il fournit plus de fonctionnalités que utime().

BOGUES

Linux ne prend pas soin de distinguer les erreurs de retour EACCES et EPERM. D'un autre coté, POSIX.1-2003 est bogué dans sa description d'erreur pour utimes().

VOIR AUSSI

chattr(1), futimesat(2), stat(2), futimes(3)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 octobre 1996 et révisée le 28 novembre 2007.

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 utime ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.