引数として受け入れDIR *、その中のファイルを一覧表示する関数を作成しました(readdir関数付き)
statさらに、によって返されたファイルを処理できるようにしたいだけですreaddir。どこを指しているのかが明確ではないDIR *ので、ディレクトリのフルパスを取得する方法はありますか、それともファイルDIR *できる他の方法はありstatますか?
dirfd()他の多くの回答と同様に、を使用して、各エントリに対してreaddir()呼び出し関数で読み取ることができfstatat()ます。
int fstatat(int dirfd, const char *pathname, struct stat *buf, int flags);
この比較的あいまいな関数は、必要なことだけを実行すると思います。
openat()または、ディレクトリのfdとディレクトリから読み取ったパス名を渡すことを呼び出すこともできます。次に、を実行fstat()してファイルの統計を取得します。
@unwindの回答に基づいており、Linuxを使用しているため:
dirfd()ディレクトリのファイル記述子を取得するために呼び出すgetpid()/proc/<pid>/fd/<dirfd>を使用してリンクを読んでくださいreadlink()。それはあなたのディレクトリを名前で参照します!