_utime、_utime32、_utime64、_wutime、_wutime32、_wutime64_utime, _utime32, _utime64, _wutime, _wutime32, _wutime64

ファイルの変更時刻を設定します。Set the file modification time.


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


パスまたはファイル名を含む文字列へのポインター。Pointer to a string that contains the path or filename.

格納されている時刻値へのポインター。Pointer to stored time values.

戻り値Return Value

これらの各関数は、ファイルの変更時刻が変更されると、0 を返します。Each of these functions returns 0 if the file-modification time was changed. 戻り値-1 はエラーを示します。A return value of -1 indicates an error. 無効なパラメーターが渡された場合は、「パラメーターの検証」で説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。If an invalid parameter is passed, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数は-1 を返し、 errnoは次のいずれかの値に設定されます。If execution is allowed to continue, these functions return -1 and errno is set to one of the following values:

errno の値errno value 条件Condition
EACCESEACCES パスにディレクトリまたは読み取り専用ファイルが指定されているPath specifies directory or read-only file
EINVALEINVAL 時刻引数が無効ですInvalid times argument
EMFILEEMFILE 開いているファイルが多すぎる (変更時刻を変更するにはファイルを開く必要があります)Too many open files (the file must be opened to change its modification time)
ENOENTENOENT パスまたはファイル名が見つからないPath or filename not found

リターン コードの詳細については、「_doserrno、errno、_sys_errlist、_sys_nerr」をご覧ください。See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, return codes.

変更日が 1970 年 1 月 1 日午前 0 時以降で、使用する関数の終了日より前の場合、ファイルの日付を変更できます。The date can be changed for a file if the change date is after midnight, January 1, 1970, and before the end date of the function used. _utime_wutimeは64ビットの時刻値を使用するため、終了日は23:59:59、3000、UTC です。_utime and _wutime use a 64-bit time value, so the end date is 23:59:59, December 31, 3000, UTC. _USE_32BIT_TIME_Tが以前の動作を強制するように定義されている場合、終了日は23:59:59 年1月18日 2038 UTC です。If _USE_32BIT_TIME_T is defined to force the old behavior, the end date is 23:59:59 January 18, 2038, UTC. _utime32または _Wutime32は、 _USE_32BIT_TIME_Tが定義されているかどうかに関係なく32ビットの時刻型を使用し、常に前の終了日を保持します。_utime32 or _wutime32 use a 32-bit time type regardless of whether _USE_32BIT_TIME_T is defined, and always have the earlier end date. _utime64または _wutime64は常に64ビットの時刻型を使用するため、これらの関数は常に後の終了日をサポートします。_utime64 or _wutime64 always use the 64-bit time type, so these functions always support the later end date.


_Utime関数は、 filenameによって指定されたファイルの変更時刻を設定します。The _utime function sets the modification time for the file specified by filename. プロセスは、時刻を変更するために、ファイルに対して書き込みアクセス権が必要です。The process must have write access to the file in order to change the time. Windows オペレーティングシステムでは、 _utimbuf構造体のアクセス時間と変更時間を変更できます。In the Windows operating system, you can change the access time and the modification time in the _utimbuf structure. TimesNULLポインターの場合、変更時刻は現在の現地時刻に設定されます。If times is a NULL pointer, the modification time is set to the current local time. それ以外の場合、時刻_utimbuf型の構造体を指す必要があります。 SYS\UTIME. で定義されています。始め.Otherwise, times must point to a structure of type _utimbuf, defined in SYS\UTIME.H.

_Utimbuf構造体は、ファイル変更日付を変更するために _utimeによって使用されるファイルアクセスおよび変更時刻を格納します。The _utimbuf structure stores file access and modification times used by _utime to change file-modification dates. 構造体には、次のフィールドがあります。このフィールドは、両方ともtime_t型です。The structure has the following fields, which are both of type time_t:

actimeactime ファイルへのアクセス時刻Time of file access
modtimemodtime ファイルの変更時刻Time of file modification

_Utimbuf構造体の特定のバージョン ( _utimebuf32__utimbuf64) は、時刻型の32ビットバージョンと64ビットバージョンを使用して定義されます。Specific versions of the _utimbuf structure (_utimebuf32 and __utimbuf64) are defined using the 32-bit and 64-bit versions of the time type. これらは、この関数の 32 ビットおよび 64 ビットの特定バージョンで使用されます。These are used in the 32-bit and 64-bit specific versions of this function. _USE_32BIT_TIME_Tが定義されていない場合は、既定で _utimbuf自体が64ビットの時刻型を使用します。_utimbuf itself by default uses a 64-bit time type unless _USE_32BIT_TIME_T is defined.

_utime_futimeと同じですが、 _utimefilename引数が、開いているファイルのファイル記述子ではなく、ファイル名またはファイルへのパスである点が異なります。_utime is identical to _futime except that the filename argument of _utime is a filename or a path to a file, rather than a file descriptor of an open file.

_wutimeは、 _utimeのワイド文字バージョンです。 _wutimefilename引数はワイド文字列です。_wutime is a wide-character version of _utime; the filename argument to _wutime is a wide-character string. それ以外では、これらの関数の動作は同じです。These functions behave identically otherwise.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tutime_tutime _utime_utime _utime_utime _wutime_wutime
_tutime32_tutime32 _utime32_utime32 _utime32_utime32 _wutime32_wutime32
_tutime64_tutime64 _utime64_utime64 _utime64_utime64 _wutime64_wutime64


ルーチンRoutine 必須ヘッダーRequired headers 省略可能なヘッダーOptional headers
_utime_utime32_utime64_utime, _utime32, _utime64 <sys/utime.h><sys/utime.h> <errno.h><errno.h>
_utime64_utime64 <sys/utime.h><sys/utime.h> <errno.h><errno.h>
_wutime_wutime <utime.h> または <wchar.h><utime.h> or <wchar.h> <errno.h><errno.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.


このプログラムは、 _utimeを使用して、ファイルの変更時刻を現在の時刻に設定します。This program uses _utime to set the file-modification time to the current time.

// 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" );
      printf( "File time modified\n" );
   system( "dir crt_utime.c" );

出力例Sample Output

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

関連項目See also

時間管理Time Management
asctime、_wasctimeasctime, _wasctime
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_ftime、_ftime32、_ftime64_ftime, _ftime32, _ftime64
_futime、_futime32、_futime64_futime, _futime32, _futime64
gmtime、_gmtime32、_gmtime64gmtime, _gmtime32, _gmtime64
localtime、_localtime32、_localtime64localtime, _localtime32, _localtime64
_stat、_wstat 関数_stat, _wstat Functions
time、_time32、_time64time, _time32, _time64