FreeBSDではman mount_nullfs
指摘した:
ファイルシステムの仮想コピーとシンボリックリンクの主な違いは次のとおりです。これ
getcwd(3)
機能はうまくいきます。元のファイルシステムに影響を与えることなく、仮想コピーに他のファイルシステムをマウントできます。仮想コピーのその他のデバイス番号は、次のコマンドで返されます。stat(2)
ただし、他の点ではソースと区別することはできません。
この詩の全体的な意味/意味は何ですか?
ベストアンサー1
ファイルシステムの仮想コピーとシンボリックリンクの主な違いは次のとおりです。機能は
getcwd(3)
うまくいきます。仮想コピーでは
getcwd
シンボルでリンクされたディレクトリの動作は、かなりよく知られているトラップです。高度なUNIXプログラミング例えば(参照この問題注):シンボリックリンクの場合は対称ではありませんchdir
。getcwd
以下を使用してディレクトリを変更すると予想できます。chdir
、指定されたディレクトリに移動し、次を使用して現在のディレクトリを検索します。getcwd
、同じ値を返しますが、プロセスがシンボリックリンクを含むパスにディレクトリを変更することはありません。getcwd
すべてのシンボリックリンクを逆参照した後に得られたパスが返されます。ディレクトリを親ディレクトリに変更すると、シンボリックリンクを含むパスと参照解除されたパスのコンポーネント数が異なると、意図しない結果が生じる可能性があります。
元のファイルシステムに影響を与えることなく、他のファイルシステムを仮想コピーにマウントできます。
スティーブンの話を続けるはい/tmp/b
、影響を与えずにサブディレクトリに別のファイルシステムをマウントすることができ、サブディレクトリにファイルシステムをマウントする/some/dir
と、/tmp/a
そのファイルシステムも/some/dir
。
仮想コピーの別のデバイス番号を返します
stat(2)
が、それ以外は元のデバイスと区別することはできません。
つまり、stat
コピーまたはその下のすべてのファイルを実行すると、元とは異なるデバイス番号が返されますが、これが唯一の違いです。それ以外の場合は、同じ情報が返されますstat("/tmp/b/c", &buf)
。stat("/some/dir/c", &buf)