[samba-jp:20352] Re: ファイル生成時刻の扱いについて

Takahiro Kambe taca @ back-street.net
2008年 8月 20日 (水) 23:47:31 JST


In message <48AC10C4.4F398B29 @ asahi-net.or.jp>
	on Wed, 20 Aug 2008 21:40:36 +0900,
	Tadamasa Teranishi <yw3t-trns @ asahi-net.or.jp> wrote:
> # もちろん robocopy 等でコピーすれば、「作成日時」「更新日時」
> # 「アクセス日時」が同じファイルを複製することもできますが...。
これで思い出して、調べ直して改めてわかりました。この辺りを明示的に設定
するには utimes(2), lutimes(2),futimes(2) を使います。(lutimes(2)と
futimes(2)はBSD系のみかもしれません。)

utimes(2)で渡せる日時情報は、第二引数でtimeval構造体の配列で2つの日時
情報だけです。作成日時は設定できないと思って最初のメールは書いていまし
たが、実はそうではありませんでした。

o 第二引数が NULL: アクセスと更新の両方の日時が現在日時に設定

o 第二引数が 非NULL: 2つのメンバの配列が渡されたと仮定

	* 最初がアクセス、2つ目が更新の日時情報として設定
	* 2つめの日時情報が、現在の作成日時よりも古かったら、その値に設定

と、いう風になっているとのことです。このため、一通り設定したい場合は、

1. 作成日時を設定
2. アクセスと更新日時を設定

と2回呼び出さないといけないということです。(理想的には、3つ一度に設定
できる新しいシステムコールがあった方が良いとのことですが。)

以上、NetBSDの場合で他のオペレーティング・システムまでは確認していません。


-- 
神戸 隆博 / Takahiro Kambe 




samba-jp メーリングリストの案内