名 前
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), futimesat(2), stat(2), utimensat(2), futimens(3), futimes(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。