1

教育目的で、私は自分のFATリーダーを使用しています(ドライブなどを参照できます)。私の現在の問題は、現在の作業ディレクトリ(通常のコマンドプロンプトのプロンプトなど)を特定することです。私が知る限り、ディレクトリテーブルには、そこに到達するためにたどったパスに関する情報はありません。(私はここで見つけた標準に取り組んできました)したがって、私の現在のアプローチは、通過する各ディレクトリを追跡することです(つまり、基本的に毎回cd <dir>使用され、その値をリストに入れ、最後のディレクトリを削除しますcd ..)使用済み)

ここで問題が発生します。2つの異なるパスが同じディレクトリに移動するとします。その後、ディレクトリを上向きにたどる..と、リストから最後のディレクトリ名を削除するよりも問題が複雑になります。..降りなかった道をたどる場合は、実際にはまったく新しい作業ディレクトリを決定する必要があります。

FATが無向サイクルを許可しない場合、この問題は無関係になります。(特定のファイルシステムは、トラバーサルを単純化するというまさにこの理由でこの種の複雑さを許可しないことを読んだと思いますが、FATの特定の情報を見つけることができません)これについて心配する必要がありますか?言い換えれば、FATはツリーまたは一般的なグラフで記述されていますか?

参考までに、私はFAT16とFAT32を扱っています(ちなみにLinuxのCでは、それは無関係だと思います)

4

3 に答える 3

1

FATx形式には、サイクルを許可しないものはありません。ただし、サイクルを許可する場合は、他にも問題があります。

  • 指摘したように、2つのディレクトリエントリが同じディレクトリを指している場合、「..」はあいまいです。DOS / WINDOWSはディレクトリの全文を維持し、「cd ..」の実行は名前操作であり、ディレクトリトラバーサルではないため、通常は大したことではありません。*一方、NIXには問題があります。
  • 参照カウントはありません。つまり、RMDIR Xは、ツリー全体をウォークしてそのディレクトリへの他の参照があるかどうかを確認しない限り、ディスク領域を効果的に解放できません。
  • さらに悪いことに、ルートからサイクルを「切断」して、CHKDSK/fsckがクリーンアップする必要のある到達不能なスペースを残す可能性があります。

(注:これらは、* NIXがディレクトリへのハードリンクを許可しない理由の一部です)。

于 2012-12-04T19:29:29.247 に答える
0

周りに聞いてみると、経験豊富なオペレーティングシステムの人は、FATはサイクルを明示的に禁止していないと言っていますが、すべての実装がそれを無視するほど複雑になります。結局のところ、標準のOSは、ビットレベルのハッキングなしでそのようなサイクルを作成する方法を提供しません。したがって、問題は無視できます。

于 2012-11-01T03:27:36.887 に答える
0

ディレクトリスタックにその二重性がないため、同じサブディレクトリを指す2つの親ディレクトリがあっても問題ありません。cd ..ユーザーがコマンドを発行したら、スタックをポップするだけです。

于 2012-10-30T06:51:41.663 に答える