_utime、_utime32、_utime64、_wutime、_wutime32、_wutime64
ファイルの変更時刻を設定します。
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
);
パラメーター
filename
ファイル名またはパスを含む文字列へのポインター。times
格納されている時刻へのポインター。
戻り値
これらの関数はファイルの変更時刻が変更されると 0 を返します。1 を返しエラーを示します。無効なパラメーターが渡されると無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可された場合これらの関数は -1 を返しerrno は次の値の 1 に設定されます :
EACCES
ディレクトリまたはパスが読み取り専用ファイルを指定します。EINVAL
times の無効な引数EMFILE
開いているファイルが多すぎる。(変更時刻を変更するファイルを開く必要があります)ENOENT
検索パスまたはファイル名
これらの詳細については_doserrnoerrno_sys_errlist と _sys_nerr とそのほかのリターン コード " " を参照してください。
日付の前には変更日が 1970 年が 1 年 1 月 1 日の後にある場合は使用される関数の終了日ことができますがファイルに変更する。_utime と _wutime は 64 ビットの時刻値を使用するためは終了日 23:59: 593000 12 年 1 月 31 日のUTC。古い動作を実行するに _USE_32BIT_TIME_T が定義されている場合は終了日 03:14: 1 年 1 月 07 日 19 時 2038 の UTC。_USE_32BIT_TIME_T が定義されているかどうか _utime32 または _wutime32 の使用は 32 ビットの時刻型に関係なく以前の終了日を常に設定されています。_utime64 かが不明の _wutime64 の使用は 64 ビットの時刻型これらの関数は終了日を常にサポートします。
解説
ファイルの変更時刻が filename で指定した _utime の関数のセット *。*プロセスは時間を変更するにはファイルへの書き込みアクセスが必要です。Windows オペレーティング システムでは_utimbuf の構造のアクセス時刻および更新時刻を変更できます。times が NULL のポインターである場合更新時刻は現在の現地時刻に設定されます。それ以外の場合は times SYS \ UTIME.H. で定義されている型 _utimbuf の構造を示す必要があります。
_utimbuf の構造のストアを _utime で使用される変更の変更の日付ファイルへのアクセス時刻および変更時刻を格納します。構造体に time_t 型の両方で次のフィールドが含まれています :
actime
ファイルのアクセス時modtime
ファイルの変更時
_utimbuf の構造体の特定のバージョンは時刻型の 32 ビット バージョンと 64 ビット バージョンを使用して _utimebuf32 (および) __utimbuf64 定義されます。これらはの 32 ビット バージョンと 64 ビット バージョンで特定の関数を使用します。_USE_32BIT_TIME_T が定義されていない場合 _utimbuf 自体は既定で 64 ビットの時刻型を使用します。
_utime は _futime と同じものですが_utime の filename の引数は開いているファイルのファイル記述子はなくファイルへのファイル名またはパスです。
_wutime 関数は、_utime 関数のワイド文字バージョンです。_wutime 関数の引数 filename は、ワイド文字列です。それ以外では、これらの関数の動作は同じです。
汎用テキスト ルーチンのマップ
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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
このプログラムは現在の時刻にファイルの変更時刻を設定するには _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
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。
参照
関連項目
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64
_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32