我编写了一个函数,它接受DIR *作为参数并列出其中的文件(带readdir函数)
另外,我只想能够stat将readdir. 目前尚不清楚DIR *指向哪里,所以有没有办法从中获取目录的完整路径,DIR *或者有没有其他方法可以用来stat归档?
您可以使用dirfd(), 和许多其他答案一样,然后使用readdir()call function读取每个条目fstatat():
int fstatat(int dirfd, const char *pathname, struct stat *buf, int flags);
我认为这个相对晦涩的功能正是您所需要的。
或者,您可以调用openat()传入目录的 fd 和从目录读取的路径名。然后执行 afstat()以获取文件统计信息。
基于@unwind 答案,并且由于您使用的是 linux:
dirfd()获取目录的文件描述符getpid()/proc/<pid>/fd/<dirfd>使用阅读链接readlink()。它将按名称引用您的目录!