ch08: ☆rename semantics
328ページ、2パラの最後
Interestingly, rename is the one POSIX file operation that should have an atomic update to multiple user-visible metadata structures to provide ideal semantics. POSIX does not require said semantics and most implementations, including FreeBSD, cannot provide it.
最初の文と2番目の分は矛盾してるような気がするのだが、どういう話の流れなんだろう? 何事もなければ要求されるのだが、わざわざ要求しないことが仕様に書かれているということなのだろうか。
ここの話題は、rename システムコールの途中で障害が発生すると名前が2つ残ってしまう可能性があるということ。
別のところでも書きましたが、shouldは義務ではありません。いっぽう、requireは義務付けることになります。ですから、POSIXはそのようなデータ構造を推奨しているが、義務付けているわけではなく、FreeBSDを含む多くの実装ではそうなっていない、ということだと思います。
ちなみにshouldが義務ではないということを私はほんの数年前に知りまして、結構目から鱗でした。
投稿: himazu | 2005-07-31 09:08
「atomic であるべき操作のはずなのに、なぜか POSIX はそれを要求していない」ということなので、
矛盾はないと思います。第一文の should は、それが正しい姿であると筆者が思っていることを
表しているだけで、POSIX でそう規定されているとか、そういう側面に触れていないと思います。
投稿: hrs | 2005-08-16 03:44