_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_errlist
i _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ą ; _utime
argument 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 zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_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