UTIME
Section: Linux Programmer's Manual (2)
Updated: 2008-08-06
Index
JM Home Page
roff page
名前
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]);
説明
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) のファイルに現在時刻以外のタイムスタンプを
設定したりすることは、許可されていない。
libc4 と libc5 では、
utimes()
は単に
utime()
のラッパー (wrapper) である。
そのため秒以下を指定することはできない。
関連項目
chattr(1),
futimesat(2),
stat(2),
utimensat(2),
futimes(3),
futimens(3)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 03:27:01 GMT, April 25, 2010