K.Shirakata
argra****@ub32*****
2010年 11月 28日 (日) 21:14:45 JST
白方です。詳しいわけではないですが…。 (2010/11/28 11:00), 長南洋一 wrote: > an ancester というのは、この部分の直前にあるパラグラフを見ても > (Posix からの引用らしいところ)、「親ディレクトリ」とは > かぎらない「上位ディレクトリ」と考えてよさそうだと思います。 > それがすでに間違いだったら、指摘してください。 これはその通りだと思います。 > わたしは、「The link count of directories which contain entries > which are hard links to an ancestor will often be lower than they > otherwise should be.」を、言葉の上には上記のように解するよりない > と思ったのですが、そもそも Unix ではディレクトリへのハードリンクは > 作れないのではないでしょうか。Google で調べると、Solaris なら > 作れないことはないという情報がありました。マニュアルの著者は > Solaris のことまで考えに入れて、このくだりを書いたのでしょうか > (それはありえると思います)。だとしても、読者を混乱させる書き方だ > とは思いますが。 POSIX でわざわざループ検出の規定があると言うことは、 「UNIX ではディレクトリへのハードリンクは作れない」と決まって いるわけではないんだろうと思います。 実際 Solaris なら作れるようですし。 >> Although this behaviour may be somewhat confusing, it is >> unlikely that anybody actually depends on this behaviour. > この部分の後半も、具体的に何を言っているのかわかりません。 POSIX 的には、「ループを検出したら警告を出力しろ」となってる けれども、GNU find は最適化によってループをつくるハードリンクを 辿らない(そして警告を出力しない)ことがある。 ということなので、「GNU findを使って、警告が出るかどうかで ループがあるかどうかを知ろうとする人なんていないでしょ」って ことだと思います。 >> Symbolic links cannot be used to create filesystem cycles as such, > これもわかりません。ハードリンクだとファイルシステムの循環に > なり、シンボリックリンクだとそうならない、というのがピンと > 来ないのです。 シンボリックリンクはファイルシステムから見ると「特殊な属性のついた ただのファイル」なので、ファイルシステム的に循環が 発生しているわけではない、ということだと思います。