_futime、_futime32、_futime64
更新 : 2007 年 11 月
開いているファイルの変更時刻を設定します。
int _futime(
int fd,
struct _utimbuf *filetime
);
int _futime32(
int fd,
struct __utimbuf32 *filetime
);
int _futime64(
int fd,
struct __utimbuf64 *filetime
);
パラメータ
fd
開いているファイルへのファイル記述子。filetime
新しい変更日が格納されている構造体へのポインタ。
戻り値
処理が正常に終了した場合は 0 を返します。エラーが発生した場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、関数は –1 を返し、errno は、無効なファイル記述子を示す EBADF に設定されるか、無効なパラメータを示す EINVAL に設定されます。
解説
_futime ルーチンは、fd に関連付けられた開いているファイルの変更日およびアクセス時刻を設定します。_futime は、引数がファイル名やファイルのパスではなく、開いているファイルのファイル記述子であることを除いて、_utime と同じです。_utimbuf 構造体には、新しい変更日のフィールドとアクセス時刻のフィールドがあります。どちらのフィールドにも有効な値が必要です。_utimbuf32 および _utimbuf64 は、それぞれ 32 ビットおよび 64 ビットの時刻型を使用すること以外は、_utimbuf と同じです。Visual C++ 2005 では、_futime および _utimbuf は 64 ビットの時刻型を使用します。_futime は、_futime64 の動作と同じです。以前の動作を強制する必要がある場合は、_USE_32BIT_TIME_T を定義します。この定義により、_futime の動作は _futime32 と同じになります。また、_utimbuf 構造体は 32 ビットの時刻型を使用するようになり、__utimbuf32 と同じになります。
__utimbuf64 構造体を使用する _futime64 は、世界協定時刻 (UTC: Coordinated Universal Time) の 3000 年 12 月 31 日 23 時 59 分 59 秒までのファイルの日付を読み取って変更できます。_futime32 呼び出しは、ファイルの日付が UTC の 2038 年 1 月 18 日 19 時 14 分 07 秒を超えると失敗します。これらの関数の日付範囲の下限は、すべて 1970 年 1 月 1 日の午前零時です。
必要条件
関数 |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_futime |
<sys/utime.h> |
<errno.h> |
_futime32 |
<sys/utime.h> |
<errno.h> |
_futime64 |
<sys/utime.h> |
<errno.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_futime.c
// This program uses _futime to set the
// file-modification time to the current time.
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/utime.h>
#include <share.h>
int main( void )
{
int hFile;
// Show file time before and after.
system( "dir crt_futime.c_input" );
_sopen_s( &hFile, "crt_futime.c_input", _O_RDWR, _SH_DENYNO, 0 );
if( _futime( hFile, NULL ) == -1 )
perror( "_futime failed\n" );
else
printf( "File time modified\n" );
_close (hFile);
system( "dir crt_futime.c_input" );
}
入力 : crt_futime.c_input
Arbitrary file contents.
出力例
Volume in drive Z has no label.
Volume Serial Number is 5C68-57C1
Directory of Z:\crt
03/25/2004 10:40 AM 24 crt_futime.c_input
1 File(s) 24 bytes
0 Dir(s) 24,268,476,416 bytes free
Volume in drive Z has no label.
Volume Serial Number is 5C68-57C1
Directory of Z:\crt
03/25/2004 10:41 AM 24 crt_futime.c_input
1 File(s) 24 bytes
0 Dir(s) 24,268,476,416 bytes free
File time modified