プログラムはシンボリックリンクに従う必要がありますか?

プログラムはシンボリックリンクに従う必要がありますか?

ディレクトリ ツリーを再帰的にトラバースするプログラムでは、シンボリック リンクが親ディレクトリを指しているときに無限ループに陥るのを避けるために、シンボリック リンク (および Windows のジャンクション ポイント) をどう処理するかを把握する必要があります。明らかな 2 つのオプションは次のとおりです。

  1. シンボリックリンクを完全にスキップします。

  2. 先に進んでそれらに従ってください。ただし、アクセスしたすべてのディレクトリを追跡し、無限ループに陥りそうになったらスキップしてください。

最も一般的/期待される/好ましい選択肢はどれですか?

答え1

閲覧のみの場合はフォローしてください。

しかし、無限ループは不要だと指定しました...

シンボリックリンクが親ディレクトリを指しているときに無限ループに陥るのを避けるため

幅優先方式で再帰的に検索する場合は、次に従ってください。深さ優先方式の場合は、スキップしてください。

ファイルサイズを数える場合はスキップしてください。

記録を残すことは最適化につながることが多い、実装ではなく。もちろん、実装したほうが良いでしょう。

関連情報