Macアプリはファイルの場所をどのように追跡しますか?

Macアプリはファイルの場所をどのように追跡しますか?

Macでは、次の動作を観察しました。

  • PDF Expertを使用してPDFを開き、ファイルをいくつか変更し、Finderでファイルを移動し、PDF Expertに保存すると、新しい場所に正しく保存されます。
  • 同様のディレクトリでシェルを開き、~/foo別のアプリケーションにディレクトリをごみ箱に入れると、シェルのpwdが正しく出力されます~/.Trash/foo

後ろで何が起こるのか?このような状況は、アプリケーションがemacsのようにファイルへの絶対パスを保存しないことを示しているようです(私は正しいですか?)それともまったく異なるメカニズムですか?

ベストアンサー1

macosには、/.vol/物理​​ディレクトリとファイルにマッピングされる特別なシステムがあります。/.vol/<device_id>/<inode_number>ファイルとディレクトリは、ファイルシステムの場所に関係なくアクセスできます。

良い小さなシステムです。

したがって、プログラムはinode番号を取得して/Users/jdoe/someFile.txtから/.vol/12345/6789開くことができます(この場合、デバイスIDは12345、inode番号は6789です)。その後、/Users/jdoe/someFile.txt好きな場所(同じボリューム)に移動でき、すべてがうまく機能します。この機能をサポートするシェルスクリプトを作成することもできますmagic

ls -di <file>インデックスノード番号を取得します。

$ ls -di /User/jdoe/someFile.txt
6789 /User/jdoe/someFile.txt

編集する:

statIMSoP強調表示されたリンク回答から、ボリュームのIDとinode番号を取得できます。

GetFileInfo /.vol/12345/6789以前にあったファイルの現在位置を返します/Users/jdoe/someFile.txt

バラよりhttps://stackoverflow.com/questions/11951328/is-there-any-function-to-retrieve-the-path-linked-with-an-inodeより多くの情報を知りたいです。

おすすめ記事