Linuxは開いたファイルと同じように開いたディレクトリを表しますか?

Linuxは開いたファイルと同じように開いたディレクトリを表しますか?

Linux カーネルは、オープンファイルをファイル記述子テーブルのエントリ、v-node テーブルのエントリ、およびオープンファイルテーブルのエントリとして表します。

Linuxカーネルは開いたディレクトリを同じように表示しますか?

おそらくそうではありません。なぜディレクトリが次のように開くのかを知りたいからです。

DIR *opendir(const char *pathname);

ファイルが開いたら:

int open(const char *path, int oflag, ... /* mode_t mode */ );

おそらくそうです。なぜなら

DIR *fdopendir(int fd);

開いたファイル記述子をDIR構造に変換します。それでは、open()ファイルのようにディレクトリを開き、ファイル記述子を返すことができる関数(?)がありますかfd

opendir()open()まず、ディレクトリのファイルディスクリプタをインポートしてから、ファイルディスクリプタまたはそれfdopendir()に対応するエントリを呼び出すことによって達成されますか?

ありがとうございます。

ベストアンサー1

opendirコールバックopenのように内部的にシステムコールを呼び出すライブラリ関数です。ファイルストリームへのポインタを返すのと同様に、ディレクトリストリームへのポインタを返します。必要に応じて、ディレクトリから直接システムコールを使用することもできます。fopenopenopendirDIRfopenFILEopen

おすすめ記事