アプリ版:「スタンプのみでお礼する」機能のリリースについて

ln B Z
でハードリンクした場合、
Bのディレクトリエントリが、ファイル名=ファイルB、inode番号=3の場合、
Zのディレクトリエントリは、ファイル名=ファイルZ、inode番号=3
になると思うのですが、
ln -s B Z
でシンボリックリンクした場合、
Bのディレクトリエントリが、ファイル名=ファイルB、inode番号=3の場合、
Zのディレクトリエントリは、ファイル名=ファイルZ、参照元ファイル=ファイルB
という様になっていると思って良いのでしょうか?

A 回答 (3件)

そんな感じですが、シンボリックリンクが参照するのはあくまで「ファイルBのパス」だということは注意が必要です。

シンボリックリンクを作ってからファイルBの名前を変更するとリンクは切れます。
    • good
    • 0

ファイルシステムの実装によると思いますが、シンボリックリンクの実体は独自のinodeを持った特殊ファイルで、ファイルの内容には参照している先のファイル名が書かれていると思います。



たとえば、
$ ln -s B Z
とした後で、
$ ln Z Y
とかやってみて
$ ls -li
でinode番号を見てみると、BとZは違うinode番号、ZとYは同じinode番号になっており、しかしYはやはりBへのシンボリックリンクであることが分かります。
    • good
    • 0

「参照元」というのは表現としてあやしいけど, 「参照元ファイル」として記録される情報は「ファイルB のパス」, より正確には


コマンドラインで「B」として提供されたパス
だと思う. だから, ハードリンクと違ってシンボリックリンクでは「リンク先」が存在しなくてもいい.

「『リンク先』のパスを記録した, 特殊なファイル」としてシンボリックリンクを実装したケースは見たことがある.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!