_utime, , _utime32_utime64, _wutime, , _wutime32_wutime64

Legen Sie die Dateiänderungszeit fest.

Syntax

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

Parameter

filename
Zeiger auf eine Zeichenfolge, die den Pfad oder Dateiname enthält.

times
Zeiger auf die gespeicherten Zeitwerte.

Rückgabewert

Jede dieser Funktionen gibt „0“ zurück, wenn die Dateiänderungszeit geändert wurde. Ein Rückgabewert von -1 zeigt einen Fehler an. Wenn ein ungültiger Parameter übergeben wird, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden darf, geben diese Funktionen -1 zurück und errno werden auf einen der folgenden Werte festgelegt:

Wert vom Typ errno Bedingung
EACCES Pfad gibt Verzeichnis oder schreibgeschützte Datei an.
EINVAL Ungültiges Argument times.
EMFILE Zu viele Dateien geöffnet. (Die Datei muss geöffnet werden, damit die Änderungszeit geändert werden kann.)
ENOENT Pfad oder Dateiname wurde nicht gefunden.

Weitere Informationen zu Rückgabecodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Wenn das Datum der Änderung nach dem 1. Januar 1970, Mitternacht, und vor dem Enddatum für die Verwendung der Funktion liegt, kann das Datum für eine Datei geändert werden. _utime und _wutime verwenden einen 64-Bit-Zeitwert, sodass das Enddatum der 31. Dezember 3000, 23:59:59 UTC ist. Wenn _USE_32BIT_TIME_T so definiert wurde, dass das alte Verhalten erzwungen wird, ist das Enddatum der 18. Januar 2038, 23:59:59 UTC. _utime32 und _wutime32 verwenden einen 32-Bit-Zeittyp, unabhängig davon, ob _USE_32BIT_TIME_T definiert wurde, und weisen immer das frühere Enddatum auf. _utime64 und _wutime64 verwenden immer den 64-Bit-Zeittyp, sodass von diesen Funktionen immer das spätere Enddatum unterstützt wird.

Hinweise

Die _utime Funktion legt die Änderungszeit für die durch filename. Damit die Zeit geändert werden kann, benötigt der Prozess Schreibzugriff für die Datei. Im Betriebssystem Windows können Zugriffszeit und Änderungszeit in der _utimbuf-Struktur geändert werden. Wenn times ein NULL-Zeiger ist, wird die Änderungszeit auf die aktuelle Ortszeit festgelegt. Andernfalls muss times auf eine Struktur vom Typ _utimbuf zeigen, die in SYS\UTIME.H definiert ist.

Die _utimbuf-Struktur speichert die Dateizugriffs- und Änderungszeiten, die von _utime verwendet wird, um Datumsangaben zu Dateiänderungen zu ändern. Die Struktur weist die folgenden Felder auf, die beide vom Typ time_t sind:

Feld Beschreibung
actime Uhrzeit des Dateizugriffs
modtime Uhrzeit der Dateiänderung

Bestimmte Versionen der Struktur _utimbuf (__utimbuf32 und __utimbuf64) werden mit den 32-Bit- und 64-Bit-Versionen des Zeittyps definiert. Diese Strukturen werden in den 32-Bit- und 64-Bit-spezifischen Versionen dieser Funktion verwendet. _utimbuf selbst verwendet standardmäßig einen 64-Bit-Zeittyp, sofern nicht _USE_32BIT_TIME_T definiert wird.

_utime ist mit _futime bis auf die Tatsache identisch, dass das filename-Argument von _utime ein Dateiname oder ein Pfad zu einer Datei ist und keinen Dateideskriptor einer geöffneten Datei darstellt.

_wutime ist eine Breitzeichenversion von _utime. Das filename -Argument für _wutime ist eine Breitzeichenfolge. Anderenfalls verhalten sich diese Funktionen identisch.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Mapping generischer Textroutinen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_tutime _utime _utime _wutime
_tutime32 _utime32 _utime32 _wutime32
_tutime64 _utime64 _utime64 _wutime64

Anforderungen

Routine Erforderliche Header Optionale Header
_utime, _utime32_utime64 <sys/utime.h> <errno.h>
_utime64 <sys/utime.h> <errno.h>
_wutime <utime.h> oder <wchar.h> <errno.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Dieses Programm verwendet _utime, um die Dateiänderungszeit auf die aktuelle Zeit festzulegen.

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

Beispielausgabe

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

Siehe auch

Zeitverwaltung
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 Funktionen
time, _time32_time64