Partilhar via


_utime, _utime32, _utime64, _wutime, _wutime32, _wutime64

Defina o tempo de modificação do arquivo.

Sintaxe

int _utime( // See note in remarks section about linkage
   const char *filename,
   struct _utimbuf *times
);
int _utime32(
   const char *filename,
   struct __utimbuf32 *times
);
int _utime64(
   const char *filename,
   struct __utimbuf64 *times
);
int _wutime( // See note in remarks section about linkage
   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
);

Parâmetros

filename
Ponteiro para uma cadeia de caracteres que contém o caminho ou nome do arquivo.

times
Ponteiro para valores de tempo armazenados.

Valor de retorno

Cada uma dessas funções retorna 0 se o tempo de modificação do arquivo foi alterado. Um valor de retorno de -1 indica um erro. Se um parâmetro inválido for passado, o manipulador de parâmetros inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções retornarão -1 e errno serão definidas como um dos seguintes valores:

errno valor Condition
EACCES Path especifica diretório ou arquivo somente leitura
EINVAL Argumento inválido times
EMFILE Demasiados ficheiros abertos (o ficheiro tem de ser aberto para alterar a sua hora de modificação)
ENOENT Caminho ou nome do arquivo não encontrado

Para obter mais informações sobre códigos de retorno, consulte errno, _doserrno, _sys_errliste _sys_nerr.

A data pode ser alterada para um arquivo se a data de alteração for posterior à meia-noite, 1º de janeiro de 1970 e antes da data de término da função usada. _utime e _wutime use um valor de tempo de 64 bits, então a data final é 23:59:59, 31 de dezembro de 3000, UTC. Se _USE_32BIT_TIME_T for definido para forçar o comportamento antigo, a data final é 23:59:59 18 de janeiro de 2038, UTC. _utime32 ou _wutime32 use um tipo de tempo de 32 bits, independentemente de estar _USE_32BIT_TIME_T definido, e sempre tenha a data de término anterior. _utime64 ou _wutime64 sempre use o tipo de tempo de 64 bits, para que essas funções sempre suportem a data de término posterior.

Observações

A _utime função define o tempo de modificação para o arquivo especificado pelo filename. O processo deve ter acesso de gravação ao arquivo para alterar a hora. No sistema operacional Windows, você pode alterar o tempo de acesso e o tempo de modificação na _utimbuf estrutura. Se times for um NULL ponteiro, a hora de modificação é definida para a hora local atual. Caso contrário, times deve apontar para uma estrutura do tipo _utimbuf, definida em SYS\UTIME.H.

A _utimbuf estrutura armazena o acesso ao arquivo e os tempos de modificação usados para _utime alterar as datas de modificação do arquivo. A estrutura tem os seguintes campos, que são ambos do tipo time_t:

Campo Description
actime Tempo de acesso ao ficheiro
modtime Hora da modificação do ficheiro

Versões específicas da _utimbuf estrutura (__utimbuf32 e __utimbuf64) são definidas usando as versões de 32 bits e 64 bits do tipo de tempo. Essas estruturas são usadas nas versões específicas de 32 bits e 64 bits dessa função. _utimbuf por padrão, usa um tipo de tempo de 64 bits, a menos que _USE_32BIT_TIME_T seja definido.

_utime é idêntico _futime , exceto que o filename argumento de é um nome de arquivo ou um caminho para um arquivo, em vez de um descritor de _utime arquivo de um arquivo aberto.

_wutimeé uma versão de caracteres largos de ; o filename argumento para _wutime é uma cadeia de _utimecaracteres largos. Estas funções comportam-se de forma idêntica.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.

Observação

Quando você usa o Windows SDK versão 10.0.26100.6901 e Visual Studio 2026 ou posterior juntos, _utime e _wutime não são mais static inline (ligação interna). Em vez disso, eles são inline (ligação externa).
Para retornar ao comportamento anterior, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 antes de incluir quaisquer cabeçalhos CRT. Por padrão, _STATIC_INLINE_UCRT_FUNCTIONS é definido como 0.
Essa alteração aumenta a conformidade do UCRT com o padrão C++ e melhora a compatibilidade com módulos C++.

Mapeamentos de rotina de texto genérico

TCHAR. Rotina H _UNICODE e _MBCS não definido _MBCS definido _UNICODE definido
_tutime _utime _utime _wutime
_tutime32 _utime32 _utime32 _wutime32
_tutime64 _utime64 _utime64 _wutime64

Requerimentos

Rotina Cabeçalhos obrigatórios Cabeçalhos opcionais
_utime, _utime32, _utime64 <sys/utime.h> <errno.h>
_utime64 <sys/utime.h> <errno.h>
_wutime <utime.h> ou <wchar.h> <errno.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Example

Este programa usa _utime para definir o tempo de modificação do arquivo para a hora atual.

// 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" );
}

Saída da amostra

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

Consulte também

Gestão do tempo
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 funções
time, _time32, _time64