UTIME
Section: Linux Programmer's Manual (2)
Updated: 2007-07-27
Index
JM Home Page
roff page
名前
utime, utimes - inode のアクセス時刻/修正時刻を変更する
書式
#include <sys/types.h>
#include <utime.h>
int utime(const char *filename, const struct utimbuf *buf);
#include <sys/time.h>
int utimes(const char *filename, const struct timeval times[2]);
説明
utime()
は
filename
で示される inode のアクセス時刻と修正時刻を
buf
中の
actime と modtime
にそれぞれ変更する。
buf
が
NULL
の場合、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。
タイムスタンプの変更は以下の場合に許可される:
プロセスに適切な特権がある (Linux では
CAP_FOWNER
ケーパビリティ (capability) がある)。
または実効 (effective) ユーザ ID が、ファイルのユーザ ID と等しい。
または
buf
が NULL で、かつプロセスがファイルへの書き込み許可を持っている。
構造体
utimbuf
は以下に示すようになっている。
-
struct utimbuf {
time_t actime; /* アクセス時刻 */
time_t modtime; /* 修正時刻 */
};
関数
utime()
は 1 秒の分解能でタイムスタンプを指定することができる。
utimes()
関数
utimes()
は
utime()
と同様であるが、
times
引き数で 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)
も参照すること)。
または
buf
が NULL で、かつプロセスにタイムスタンプの変更許可がない
(上記を参照すること)。
- ENOENT
-
filename
が存在しない。
- EPERM
-
buf
が NULL でなく、かつプロセスにタイムスタンプの変更許可がない。
- EROFS
-
path
が読み込み専用のファイルシステム上にある。
準拠
utime():
SVr4, POSIX.1-2001.
utimes():
4.3BSD
注意
Linux では、不変 (immutable) ファイルのタイムスタンプを変更したり、
追加専用 (append-only) のファイルに現在時刻以外のタイムスタンプを
設定したりすることは、許可されていない。
libc4 と libc5 では、
utimes()
は単に
utime()
のラッパー (wrapper) である。
そのため秒以下を指定することはできない。
POSIX.1-2001 では
utimes()
は過去の名残であるとされているが、不思議なことに
utimes()
は
utime()
よりも高機能である。
バグ
Linux は
EACCES
と
EPERM
エラーの区別に注意を払っていない。
また POSIX.1-2001 では
utimes()
のエラーの記述にバグがある。
関連項目
chattr(1),
futimesat(2),
stat(2),
futimes(3)
Index
- 名前
-
- 書式
-
- 説明
-
- utimes()
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:10 GMT, November 19, 2007