ディレクトリはどのように「特殊タイプのファイル」になりますか?

ディレクトリはどのように「特殊タイプのファイル」になりますか?

私は読んでいます。このUNIXチュートリアルそして発見したこの文章..

ここで、ディレクトリは特別な種類のファイルにすぎないことに注意してください。

...しかし、説明や詳細は提供されていません。ディレクトリが実際にファイルであるのはなぜですか?

ベストアンサー1

* nixスタイル(およびその他)オペレーティングシステムの多くのエンティティはファイルとして扱われるか、ファイルと同様の側面を定義しましたが、ファイルシステムに格納されているバイトシーケンスである必要はありません。ディレクトリが実装される正確な方法はファイルシステムの種類によって異なりますが、通常ディレクトリに含まれるもの(リストとして扱われる)は格納されたバイトのシーケンスなので、その意味ではそれほど特別ではありません。

* nixコンテキストで「ファイル」を定義する1つの方法はファイル記述子と関連付けられる。 Wikipediaの記事によると、ファイル記述子

ファイルアクセスのための抽象的なインジケータ。またはその他の入力/出力リソース、パイプやネットワーク接続など...

つまり、そのシーケンスのソース/ターゲットが指定されていなくても、バイトシーケンスを読み書きできるさまざまなリソースを表します。つまり、リソースの「場所」は何でも構いません。その定義は情報の通路ということです。これが時々UNIXで「すべてがファイルです」と言う理由の一部です。この言葉を完全に文字通り受け入れてはいけませんが、真剣に考えてみる価値があります。ディレクトリの場合、この情報はディレクトリ内のコンテンツと、より低い実装レベルでファイルシステムでそれらを見つける方法に関連しています。

ディレクトリは、ネイティブCコードでファイル記述子と表面的に関連付けられていないという点で少し特別です。 POSIX APIは特別なタイプのストリームハンドルを使用しますDIR*が、このタイプには実際にはデフォルト記述子があります。検索可能。ディスクリプタはカーネルによって管理され、それにアクセスするには常にシステムコールが必要であるため、ディスクリプタの別の側面はオペレーティングシステムカーネルによって制御されるパイプであるということです。ゼロで始まる固有の(プロセス別)番号があり、これは通常プロセスの説明です。 標準入力小川。

おすすめ記事