標準
標準/拡張機能 |
C/C++ |
依存項目 |
XPG4.2
Single UNIX Specification、バージョン 3
|
両方 |
|
形式
#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/time.h>
int utimes(const char *path, const struct timeval times[2]);
機能説明
utimes() 関数は、path 引数によって指示された
ファイルのアクセス時間と変更時間を times 引数の値に
設定します。
times 引数は、2 つの
timeval 構造体の
配列です。最初の配列メンバーは最後のアクセスの日時を表し、2 番目の
メンバーは最後の変更の日時を表します。
timeval 構造体
の時間はエポック以降の秒数とマイクロ秒で測定されますが、ファイルに保管された実際の時間は最も近い秒数に丸められます。
timeval メンバーは次のとおりです。
- tv_sec
- 1970 年 1 月 1 日からの秒数。(UTC)
- tv_usec
- マイクロ秒。
times 引数が NULL ポインターの場合には、ファイルの
アクセス時間と変更時間は現在時間に設定されます。utime() 関数の同じプロセス特権要件が utimes() で必要です。最後のファイル状況変更、stat() の
フィールド st_ctime は、現在時間で更新されます。
注: utimes() 関数は Single UNIX Specification、バージョン 3 のレガシー・オプション・グループ
に既に移動されていて、将来のバージョンで廃止する可能性があります。移植性の観点からは、utime() 関数
が推奨されます。
戻り値
正常に実行された場合、utimes() は 0 を戻します。
正常に実行されなかった場合、utimes() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EACCES
- プロセスには、path 接頭部のあるコンポーネントに
対する検索許可がありません。あるいは次のすべてが該当します。
- times は NULL です。
- プロセスの有効ユーザー ID は、ファイルの所有者に一致して
いません。
- プロセスにはファイルに対する書き込み許可がありません。
- プロセスには適切な特権がありません。
- ELOOP
- ループがシンボリック・リンクに存在しています。このエラーが出されるのは、(limits.h ヘッダー・ファイルに定義されている) POSIX_SYMLOOP より
大きいシンボリック・リンクが path の解決で検出された場合です。
- ENAMETOOLONG
- _POSIX_NO_TRUNC が有効ですが、path が PATH_MAX 文字より長いか、または path の一部のコンポーネントが NAME_MAX 文字より長くなっています。シンボリック・リンクの場合、シンボリック・リンクの代わりに使われる
パス名のストリングの長さが PATH_MAX を超えています。PATH_MAX 値と NAME_MAX 値は
、pathconf() を使用して確認できます。
- ENOTDIR
- path 接頭部のコンポーネントの一部がディレクトリーではありません。
- ENOTENT
- path という名前のファイルがないか、あるいは path 引数が空ストリングです。
- EPERM
- times が NULL でない場合には、呼び出しプロセスの
有効ユーザー ID はファイルの所有者に一致せず、呼び出しプロセスに
は適切な特権はありません。
- EROFS
- path は読み取り専用ファイル・システムにあります。