_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_errlist
e _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