utime - システムコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- エラー
- 注意
- バグ
- 準拠
- 関連項目
名前
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
()は
utime
()と同様であるが、1 マイクロ秒の分解能でタイムスタンプを指定することができる。
ここで、
times
[0]はアクセス時刻を参照し、
times
[1]は修正時刻を参照する。
構造体
timeval
は以下に示す通りである。
struct timeval {
long tv_sec; /* 秒 */
long tv_usec; /* マイクロ秒 */
};
返り値
成功した場合 0 が返る。失敗した場合 -1 が返り、
errno
がエラーの内容に従って設定される。
エラー
-
EACCES
-
path
を構成する何れかのディレクトリに検索許可がない
(
path_resolution
(2)も参照すること)。
または
buf
が NULL で、かつプロセスにタイムスタンプの変更許可がない
(上記を参照すること)。
-
ENOENT
-
filename
が存在しない。
-
EPERM
-
buf
が NULL でなく、かつプロセスにタイムスタンプの変更許可がない。
-
EROFS
-
path
が読み込み専用のファイルシステム上にある。
注意
Linux では、不変 (immutable) ファイルのタイムスタンプを変更したり、
追加専用 (append-only) のファイルに現在時刻以外のタイムスタンプを
設定したりすることは、許可されていない。
libc4 と libc5 では、
utimes
()は単に
utime
()のラッパー (wrapper) である。
そのため秒以下を指定することはできない。
POSIX.1-2001 では
utimes
()は過去の名残であるとされているが、不思議なことに
utimes
()は
utime
()よりも高機能である。
バグ
Linux は EACCES と EPERM エラーの区別に注意を払っていない。
また POSIX.1-2001 では
utimes
()のエラーの記述にバグがある。
準拠
utime
():
utimes
():4.3BSD
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする