Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
utime, utimes - ファイルの最終アクセス時刻と修正時刻を変更する
書式
#include <sys/types.h> #include <utime.h> int utime(const char *filename, const struct utimbuf *times); #include <sys/time.h> int utimes(const char *filename, const struct timeval times[2]);
説明
備考: 最近のアプリケーションの場合、 utimensat(2) で説明されているインターフェースを使いた いと思うかもしれない。 utime() システムコールは filename で示される inode のアクセス時刻と修正時刻を times 中の actime と modtime にそれぞれ変更する。 times が NULL の場合、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。 タイムスタンプの変更は以下のいずれかの場合に許可される。 プロセスに適切な特権がある場合、 実効 (effective) ユーザー ID がファイルのユーザー ID と等しい場合、 times が NULL かつ、プ ロセスがファイルへの書き込み許可を持っている場合。 構造体 utimbuf は以下に示すようになっている。 struct utimbuf { time_t actime; /* アクセス時刻 */ time_t modtime; /* 修正時刻 */ }; utime() システムコールは 1 秒の分解能でタイムスタンプを指定することができる。 utimes() は utime() と同様であるが、 times 引数が構造体ではなく配列を参照する。 この配列 の要素は timeval 構造体で、タイムスタンプの指定を 1 マイクロ秒の分解能で行うことができる。 構造体 timeval は以下に示す通りである。 struct timeval { long tv_sec; /* 秒 */ long tv_usec; /* マイクロ秒 */ }; times[0] は新しいアクセス時刻を、 times[1] は新しい修正時刻を規定する。 times が NULL の場 合、 utime() 同様、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。
返り値
成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。
エラー
EACCES path を構成する何れかのディレクトリに検索許可がない (path_resolution(7) も参照する こと)。 EACCES times が NULL である。 または、呼び出し元の実効ユーザー ID がファイルの所有者と一致 しない。 または、呼び出し元がそのファイルへの書き込み許可を持たず、 特権も持ってい ない (Linux の場合、ケーパビリティ CAP_DAC_OVERRIDE も CAP_FOWNER も持っていな い)。または、 ENOENT filename が存在しない。 EPERM times が NULL でなく、かつ呼び出し元の実効 UID がファイルの所有者と一致せず、 かつ 呼び出し元が特権を持っていない (Linux の場合、ケーパビリティ CAP_FOWNER を持ってい ない)。 EROFS path が読み込み専用のファイルシステム上にある。
準拠
utime(): SVr4, POSIX.1-2001. POSIX.1-2008 は utime() を廃止予定としている。 utimes(): 4.3BSD, POSIX.1-2001.
注意
Linux では、不変 (immutable) ファイルのタイムスタンプを変更したり、 追加専用 (append-only) のファイルに現在時刻以外のタイムスタンプを 設定したりすることは、許可されていない。
関連項目
chattr(1), touch(1), futimesat(2), stat(2), utimensat(2), futimens(3), futimes(3), inode(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。