一部のCプロジェクトではdirent.hを使用する必要があります。オンラインで見つけた様々な説明に基づいて、私は漠然としたアイデアを思い出しました。ディレクトリエントリファイルに関するすべてを伝えるデータ構造です。ディレクトリエントリとは何ですか?
答え1
ファイルに関するすべてではなく、ファイルに関するほとんどのメタデータは、ディレクトリエントリではなくファイルinodeに保存されます。ディレクトリエントリは単にinodeとファイル名の構造です。つまり、ファイル名をinodeに変換して実際のファイルを取得するのに十分な情報です。
ディレクトリを事前に考えると安全です。
filename1 :> inode1
filename2 :> inode2
....
次に、inode番号(デフォルトでinodeの一意のアドレス - 一種のポインタ)を追跡し、すべての権限、所有権データ、日付、拡張属性、そしてもちろんファイルの内容(ファイルの場合)を見つけます。 )。もちろん、ディレクトリエントリは、他のディレクトリ、シンボリックリンク、デバイスノード、または同様のものであってもよい。それを調べるにはそこに行く必要があります。
答え2
ディレクトリエントリは、デフォルトでファイル名を対応するインデックスノードにマップします。ユーザーは通常ファイル名でファイルにアクセスしますが、これらのファイル名はカーネルでは理解されません。
カーネルは、ファイルの一意の inode を使用してファイルを識別します。
この inode には、ファイル名とファイルの実際のデータを除くファイルのすべてのデータが含まれます。 inodeへのファイル名マッピングは、ディレクトリエントリと呼ばれるデータ構造内に保持されます。
同じディレクトリまたは異なるディレクトリ内の多くのエントリが同じファイル(同じinode)を識別できることに注意してください。したがって、名前があれば、対応するinodeを簡単に取得できます。 inodeがあれば、名前を見つけるのははるかに難しいです(find
ユーティリティはそのためのツールです)。
答え3
Unix環境の高度なプログラミング(アプエ)第1.4条:
ディレクトリとは何ですか?
ㅏ目次ディレクトリエントリを含むファイルです。
カタログアイテムとは何ですか?
論理的に、私たちはすべてを考えることができます。 ディレクトリエントリファイル名とファイル属性を記述する情報構造を含みます。ファイル属性には、ファイルタイプ(一般ファイル、ディレクトリ)、ファイルサイズ、ファイル所有者、ファイル権限(他のユーザーがファイルにアクセスできるかどうか)、およびファイルにアクセスした時間が含まれます。最後のレビュー。
stat
関数は、fstat
ファイルのすべての属性を含む情報構造を返します。
関連資料については§4.14を参照してください。アプエ。