_utime, _utime32, _utime64, _wutime, _wutime32, _wutime64

Ustaw czas modyfikacji pliku.

Składnia

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
);

Parametry

filename
Wskaźnik do ciągu zawierającego ścieżkę lub nazwę pliku.

times
Wskaźnik do przechowywanych wartości czasu.

Wartość zwracana

Każda z tych funkcji zwraca wartość 0, jeśli czas modyfikacji pliku został zmieniony. Zwracana wartość -1 wskazuje błąd. Jeśli przekazano nieprawidłowy parametr, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie może kontynuować, te funkcje zwracają wartość -1 i errno są ustawione na jedną z następujących wartości:

errno Wartość Stan
EACCES Ścieżka określa katalog lub plik tylko do odczytu
EINVAL Nieprawidłowy times argument
EMFILE Zbyt wiele otwartych plików (plik musi zostać otwarty, aby zmienić czas modyfikacji)
ENOENT Nie można odnaleźć ścieżki lub nazwy pliku

Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Datę można zmienić dla pliku, jeśli data zmiany przypada po północy, 1 stycznia 1970 r. i przed datą zakończenia używanej funkcji. _utime i _wutime użyj 64-bitowej wartości czasu, więc data zakończenia to 23:59:59, 31 grudnia 3000, UTC. Jeśli _USE_32BIT_TIME_T zdefiniowano tak, aby wymusić stare zachowanie, data zakończenia to 23:59:59 18 stycznia 2038 r. UTC. _utime32 lub _wutime32 użyj 32-bitowego typu czasu niezależnie od tego, czy _USE_32BIT_TIME_T jest zdefiniowany, i zawsze ma wcześniejszą datę zakończenia. _utime64 lub _wutime64 zawsze używaj typu czasu 64-bitowego, więc te funkcje zawsze obsługują późniejszą datę zakończenia.

Uwagi

Funkcja _utime ustawia czas modyfikacji pliku określonego przez filename. Aby zmienić czas, proces musi mieć dostęp do zapisu do pliku. W systemie operacyjnym Windows można zmienić czas dostępu i czas modyfikacji w _utimbuf strukturze. Jeśli times jest wskaźnikiem NULL , czas modyfikacji jest ustawiony na bieżący czas lokalny. times W przeciwnym razie musi wskazywać strukturę typu _utimbuf, zdefiniowaną w pliku SYS\UTIME.H.

Struktura _utimbuf przechowuje czasy dostępu do plików i modyfikacji używane przez _utime program w celu zmiany dat modyfikacji pliku. Struktura ma następujące pola, które są typu time_t:

Pole Opis
actime Czas dostępu do plików
modtime Czas modyfikacji pliku

Określone wersje _utimbuf struktury (__utimbuf32 i __utimbuf64) są definiowane przy użyciu 32-bitowych i 64-bitowych wersji typu czasu. Te struktury są używane w 32-bitowych i 64-bitowych wersjach tej funkcji. _utimbuf domyślnie używa typu czasu 64-bitowego, chyba że _USE_32BIT_TIME_T jest zdefiniowany.

_utime jest identyczny z _futime tym, że filename argument _utime nazwy pliku jest nazwą pliku lub ścieżką do pliku, a nie deskryptorem pliku otwartego.

_wutime jest wersją szerokoznakową ; _utimeargument to filename_wutime ciąg o szerokim znaku. Te funkcje zachowują się identycznie inaczej.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

Procedura TCHAR.H _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tutime _utime _utime _wutime
_tutime32 _utime32 _utime32 _wutime32
_tutime64 _utime64 _utime64 _wutime64

Wymagania

Procedura Wymagane nagłówki Opcjonalne nagłówki
_utime, _utime32, _utime64 <sys/utime.h> <errno.h>
_utime64 <sys/utime.h> <errno.h>
_wutime <utime.h> lub <wchar.h> <errno.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

Ten program używa _utime do ustawiania czasu modyfikacji pliku na bieżący czas.

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

Przykładowe dane wyjściowe

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

Zobacz też

Zarządzanie czasem
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 funkcje
time, _time32, _time64