Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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  中の
       actimemodtime にそれぞれ変更する。

       timesNULL の場合、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。

       タイムスタンプの変更は以下のいずれかの場合に許可される。  プロセスに適切な特権がある場合、
       実効 (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_OVERRIDECAP_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/ に書かれている。