0

プロジェクトでは、プログラムはディレクトリの各子の参照/識別子をその変数 (スタックなど) に保存する必要があります。つまり、ディレクトリが読み取られると、プログラムはすべての子に対して再度 pathlookup を実行してはなりません。

その方法がよくわかりません。inode番号が格納されている場合、対応するファイル/ディレクトリにinodeからアクセスできないからですよね?

いくつかの指針に感謝します

ありがとう

編集:「pathlookupを再度実行してはならない」という私の理由.....スレッドはファイルシステムツリーを深さから最初に読み取っており、ディレクトリを読み取ると...その子の識別子は、それに続くために保存されます再び深さ第一の方法。識別子を保存する理由は、読み取られたディレクトリが同時スレッドによってファイル システムの別の部分に移動される可能性があり、移動されたディレクトリの下のサブツリーが、ツリーのその部分が既に走査されているために読み取られない可能性があるためです。

4

1 に答える 1

1

これは宿題のようなにおいがしますが、以前はこれを行う方法がありませんでした。現在は可能ですが、かなり新しいopenatシステム コールとその仲間を使用する必要があります (そのマンページの下部にある「関連項目」リストを参照してください)。inode 番号でファイルを開くことができないというのは正しいです。ただし、*at関数を使用すると、開いているファイル記述子 (ではない) があるディレクトリに相対的な名前でファイルを開くことができます。DIR*

于 2011-11-03T04:06:56.520 に答える