파일 수정 시간을 설정합니다.
구문
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
);
매개 변수
filename
경로 또는 파일 이름을 포함하는 문자열에 대한 포인터입니다.
times
저장된 시간 값에 대한 포인터입니다.
반환 값
파일 수정 시간을 변경한 경우 이러한 각 함수는 0을 반환합니다. 반환 값 -1은 오류를 나타냅니다. 잘못된 매개 변수가 전달되면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 실행을 계속하도록 허용된 경우 이러한 함수는 -1을 반환하고 errno 다음 값 중 하나로 설정됩니다.
errno 값 |
조건 |
|---|---|
EACCES |
경로가 디렉터리 또는 읽기 전용 파일을 지정함 |
EINVAL |
times 인수가 잘못됨 |
EMFILE |
파일이 너무 많이 열려 있음(수정 시간을 변경하려면 파일을 열어야 함) |
ENOENT |
경로 또는 파일 이름을 찾을 수 없음 |
반환 코드에 대한 자세한 내용은 , , 및_doserrno._sys_errlist_sys_nerr
변경 날짜가 1970년 1월 1일 자정 이후이고 사용한 함수의 종료 날짜 이전이면 파일의 날짜를 변경할 수 있습니다.
_utime 및 _wutime은 64비트 시간 값을 사용하므로 종료 시간은 3000년 12월 31일 23:59:59(UTC)입니다.
_USE_32BIT_TIME_T이 이전 동작을 강제 적용하도록 정의된 경우의 종료 날짜는 2038년 1월 18일 23:59:59(UTC)입니다.
_utime32 또는 _wutime32는 _USE_32BIT_TIME_T 정의 여부와 관계없이 32비트 시간 형식을 사용하며 항상 종료 날짜가 더 빠릅니다.
_utime64 또는 _wutime64는 항상 64비트 시간 형식을 사용하므로 이러한 함수는 항상 더 이후의 종료 날짜를 지원합니다.
설명
이 함수는 _utime .에 지정된 filename파일의 수정 시간을 설정합니다. 시간을 변경하려면 프로세스에 파일에 대한 쓰기 권한이 있어야 합니다. Windows 운영 체제에서는 _utimbuf 구조체에서 액세스 시간과 수정 시간을 변경할 수 있습니다.
times가 NULL 포인터이면 수정 시간은 현재 현지 시간으로 설정됩니다. 그렇지 않으면 times는 SYS\UTIME.H에 정의된 _utimbuf 형식의 구조체를 가리켜야 합니다.
_utimbuf 구조체는 _utime에서 파일 수정 날짜를 변경하는 데 사용하는 파일 액세스 및 수정 시간을 저장합니다. 이 구조체에는 다음 필드가 포함되어 있습니다. 이 두 필드의 형식은 모두 time_t입니다.
| 필드 | 설명 |
|---|---|
actime |
파일 액세스 시간 |
modtime |
파일 수정 시간 |
특정 버전의 _utimbuf 구조체(__utimbuf32 및 __utimbuf64)는 32비트 및 64비트 버전의 시간 형식을 사용하여 정의됩니다. 이러한 구조체는 이 함수의 32비트 및 64비트 특정 버전에서 사용됩니다.
_utimbuf 자체는 _USE_32BIT_TIME_T를 정의하는 경우가 아니면 기본적으로 64비트 시간 형식을 사용합니다.
_utime은 _futime의 filename 인수가 열린 파일의 파일 설명자가 아닌 파일 이름이나 파일 경로라는 점을 제외하면 _utime과 동일합니다.
_wutime 은 _utime의 와이드 문자 버전이며, filename 에 대한 _wutime 인수는 와이드 문자열입니다. 그 외의 경우에는 이들 함수가 동일하게 작동합니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
비고
Windows SDK 버전 10.0.26100.6901 및 Visual Studio 2026 이상을 함께 _utime_wutime 사용하는 경우 더 이상 static inline (내부 링크)이 아닙니다. 대신 외부 inline 링크입니다.
CRT 헤더를 포함하기 전에 이전 동작 #define _STATIC_INLINE_UCRT_FUNCTIONS=1 으로 돌아가려면 기본적으로 _STATIC_INLINE_UCRT_FUNCTIONS는 0으로 설정됩니다.
이 변경으로 UCRT가 C++ 표준을 준수하고 C++ 모듈과의 호환성이 향상됩니다.
일반 텍스트 루틴 매핑
| TCHAR.H 루틴 |
_UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
|---|---|---|---|
_tutime |
_utime |
_utime |
_wutime |
_tutime32 |
_utime32 |
_utime32 |
_wutime32 |
_tutime64 |
_utime64 |
_utime64 |
_wutime64 |
요구 사항
| 루틴에서 반환된 값 | 필수 헤더 | 선택적 헤더 |
|---|---|---|
_utime, , _utime32_utime64 |
<sys/utime.h> | <errno.h> |
_utime64 |
<sys/utime.h> | <errno.h> |
_wutime |
<utime.h> 또는 <wchar.h> | <errno.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
이 프로그램은 _utime을 사용하여 파일 수정 시간을 현재 시간으로 설정합니다.
// 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" );
}
샘플 출력
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
참고 항목
시간 관리
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 함수
time, , _time32_time64