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