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