- Tumbleweed 20260815-1.1
- Leap-16.0
- Leap-15.6
| utime(2) | System Calls Manual | utime(2) |
名前¶
utime, utimes - ファイルの最終アクセス時刻と修正時刻を変更する
ライブラリ¶
標準 C ライブラリ (libc, -lc)
書式¶
#include <utime.h>
int utime(const char *path,
const struct utimbuf *_Nullable times);
#include <sys/time.h>
int utimes(const char *path,
const struct timeval times[_Nullable 2]);
説明¶
備考: 最近のアプリケーションの場合、 utimensat(2) で説明されているインターフェースを使いたいと思うかもしれません。
The utime() システムコールは、path で指定された iノードのアクセス時刻と修正時刻を、それぞれ times の actime フィールドと modtime フィールドに変更します。ステータス変更時刻(ctime)は、他のタイムスタンプが実際に変更されない場合でも、現在の時刻に設定されます。
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 も持っていません)。または、
- EFAULT
- path に無効なアドレスが指定されました。
- ENOENT
- path が存在しません。
- EPERM
- times が NULL でなく、かつ呼び出し元の実効 UID がファイルの所有者と一致せず、 かつ呼び出し元が特権を持っていません (Linux の場合、ケーパビリティ CAP_FOWNER を持っていません)。
- EROFS
- path が読み込み専用のファイルシステム上にあります。
標準¶
履歴¶
注意¶
Linux では、不変 (immutable) ファイルのタイムスタンプを変更したり、 追加専用 (append-only) のファイルに現在時刻以外のタイムスタンプを設定したりすることは、許可されていません。
関連項目¶
chattr(1), touch(1), futimesat(2), stat(2), utimensat(2), futimens(3), futimes(3), inode(7)
| 2026-02-08 | Linux man-pages (未リリース) |