..と親ディレクトリ間のリンクがハードリンクであるのはなぜですか?


1

..と親ディレクトリ間のリンクがハードリンクであり、同じiノード番号を持っていることに気付きました。

starpinker@host /home/starpinker/unix $ ls -ail
8200794 drwxrwxr-x 2 starpinker starpinker 4096 Aug 23 11:22 .
1409238 drwxrwxr-x 2 starpinker starpinker 4096 Aug 23 11:22 ..

ここで、iノード番号/home/starpinker/unix8200794で、iノード番号は/home/starpinkerである1409238

これについて質問があります。

ハードリンクは、異なるファイルシステム間で作成できません。次に、親ディレクトリと子ディレクトリが異なるファイルシステムにある場合はどうなりますか?たとえば私の場合は、場合のために/home/starpinker/home/starpinker/unix異なるファイルシステムであり、UNIXは、その後の間のリンクになる、ちょうどマウントポイントである/home/starpinker/unix/..とは/home/starpinkerまだハードリンクしますか?


どうやらので、私はちょうど私のWindowsマウントポイントをチェックし、それは、Linuxへの通常のハードリンクがある/である..それのために。しかし、それがどのように機能するかわかりません。しばらくしてここで回答が得られない場合は、U&Lへの移行のフラグを立ててみてください。質問は両方のサイトのトピックにあり、ここにとどまることを歓迎します。U&Lのハードコア* nixエキスパートだけがいます。
テルドン

ありがとう、@ terdon、リンクを修正できますか?U&Lリンクをたどっていますが、間違っているようです。
-StarPinkER

unix.stackexchange.comしかし、そこに同じ質問を投稿しないでください。移行のフラグを立てるか、この質問を削除してください。また、私が前に言ったように、あなたはここにそれを残すことができます、それは話題になっていて、あなたのために答えることができる誰かがあるかもしれません。
テルドン

回答:


2

なぜそれがハードリンクなのですか?親ディレクトリを指しているためです。リンクではない場合、他に何ができますか?

ファイルシステムのルートディレクトリについて..は、依然としてハードリンクですが、ディレクトリ自体を指し.ます。つまり、と同等です。カーネルのVFSレイヤー(マウントポイントとファイルシステムを管理する)は、この特殊なケースを処理し、ファイルシステムを実際に見る/home/starpinker/unix/..こと/home/starpinkerなく魔法のように解決します。

(また、私はこれを研究していないが、私はいくつかのファイルシステムが本当に守らないと思います.し、..代わりにディスク上のリンクが、本エミュレートされたもの。VFS層は、実際にすべてのためにことをやった場合、それは私は驚かないだろう..、リンクではありませんただ特別な場合...)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.