_utime, _utime32, _utime64, _wutime, _wutime32, _wutime64

Imposta l'ora di modifica del file.

Sintassi

int _utime(
   const char *filename,
   struct _utimbuf *times
);
int _utime32(
   const char *filename,
   struct __utimbuf32 *times
);
int _utime64(
   const char *filename,
   struct __utimbuf64 *times
);
int _wutime(
   const wchar_t *filename,
   struct _utimbuf *times
);
int _wutime32(
   const wchar_t *filename,
   struct __utimbuf32 *times
);
int _wutime64(
   const wchar_t *filename,
   struct __utimbuf64 *times
);

Parametri

filename
Puntatore a una stringa contenente il percorso o il nome del file.

times
Puntatore ai valori di ora archiviati.

Valore restituito

Ognuna di queste funzioni restituisce 0 se l'ora di modifica del file è cambiata. Il valore restituito -1 indica un errore. Se viene passato un parametro non valido, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono -1 e errno vengono impostate su uno dei valori seguenti:

Valore errno Condizione
EACCES Il percorso specifica una directory o un file di sola lettura
EINVAL Argomento times non valido
EMFILE Troppi file aperti (il file deve essere aperto per modificarne l'ora di modifica)
ENOENT Percorso o nome del file non trovato

Per altre informazioni sui codici restituiti, vedere errno, _doserrno, _sys_errliste _sys_nerr.

La data può essere modificata per un file, se la data di modifica è successiva alla mezzanotte del 1 gennaio 1970 e precedente alla data di fine della funzione usata. _utime e _wutime usano un valore di ora a 64 bit, quindi la data di fine corrisponde alle 23.59.59 del 31 dicembre 3000, UTC. Se si definisce _USE_32BIT_TIME_T per forzare il comportamento precedente, la data di fine corrisponde alle 23.59.59 del 18 gennaio 2038, UTC. Le funzioni _utime32 o _wutime32 usano un tipo di ora a 32 bit indipendentemente dal fatto che sia definito _USE_32BIT_TIME_T e la data di fine è sempre quella precedente. Le funzioni _utime64 o _wutime64 usano sempre il tipo di ora a 64 bit e pertanto supportano sempre la data di fine successiva.

Osservazioni:

La _utime funzione imposta il tempo di modifica per il file specificato da filename. Il processo deve disporre dell'accesso in scrittura al file per poter modificare l'ora. Nel sistema operativo Windows, è possibile modificare l'ora di accesso e l'ora di modifica nella struttura _utimbuf. Se times è un puntatore NULL, l'ora di modifica è impostata sull'ora locale corrente. In caso contrario, times deve puntare a una struttura di tipo _utimbuf, definita in SYS\UTIME. H.

La struttura _utimbuf archivia le ore di accesso e modifica dei file usate da _utime per modificare le date di modifica dei file. La struttura contiene i campi seguenti, entrambi di tipo time_t:

Campo Descrizione
actime Ora di accesso al file
modtime Ora di modifica del file

Vengono definite versioni specifiche della struttura _utimbuf (__utimbuf32 e __utimbuf64) usando le versioni a 32 bit e 64 bit del tipo di ora. Queste strutture vengono usate nelle versioni specifiche a 32 bit e a 64 bit di questa funzione. La struttura _utimbuf stessa usa un tipo di ora a 64 bit per impostazione predefinita, a meno che non venga definito _USE_32BIT_TIME_T.

La funzione _utime è identica a _futime, ad eccezione del fatto che l'argomento filename di _utime è un nome di file o un percorso di un file, invece di un descrittore del file di un file aperto.

_wutime è una versione a caratteri wide di _utime; l'argomento filename in _wutime è una stringa di caratteri wide. A parte ciò, queste funzioni si comportano in modo identico.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

Routine TCHAR.H _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_tutime _utime _utime _wutime
_tutime32 _utime32 _utime32 _wutime32
_tutime64 _utime64 _utime64 _wutime64

Requisiti

Ciclo Intestazioni obbligatorie Intestazioni facoltative
_utime, _utime32, _utime64 <sys/utime.h> <errno.h>
_utime64 <sys/utime.h> <errno.h>
_wutime <utime.h> o <wchar.h> <errno.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

Questo programma usa _utime per impostare l'ora di modifica dei file sull'ora corrente.

// crt_utime.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/utime.h>
#include <time.h>

int main( void )
{
   struct tm tma = {0}, tmm = {0};
   struct _utimbuf ut;

   // Fill out the accessed time structure
   tma.tm_hour = 12;
   tma.tm_isdst = 0;
   tma.tm_mday = 15;
   tma.tm_min = 0;
   tma.tm_mon = 0;
   tma.tm_sec = 0;
   tma.tm_year = 103;

   // Fill out the modified time structure
   tmm.tm_hour = 12;
   tmm.tm_isdst = 0;
   tmm.tm_mday = 15;
   tmm.tm_min = 0;
   tmm.tm_mon = 0;
   tmm.tm_sec = 0;
   tmm.tm_year = 102;

   // Convert tm to time_t
   ut.actime = mktime(&tma);
   ut.modtime = mktime(&tmm);

   // Show file time before and after
   system( "dir crt_utime.c" );
   if( _utime( "crt_utime.c", &ut ) == -1 )
      perror( "_utime failed\n" );
   else
      printf( "File time modified\n" );
   system( "dir crt_utime.c" );
}

Output di esempio

Volume in drive C has no label.
Volume Serial Number is 9CAC-DE74

Directory of C:\test

01/09/2003  05:38 PM               935 crt_utime.c
               1 File(s)            935 bytes
               0 Dir(s)  20,742,955,008 bytes free
File time modified
Volume in drive C has no label.
Volume Serial Number is 9CAC-DE74

Directory of C:\test

01/15/2002  12:00 PM               935 crt_utime.c
               1 File(s)            935 bytes
               0 Dir(s)  20,742,955,008 bytes free

Vedi anche

Gestione orari
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_ftime, _ftime32, _ftime64
_futime, _futime32, _futime64
gmtime, _gmtime32, _gmtime64
localtime, _localtime32, _localtime64
_stat, _wstat funzioni
time, _time32, _time64