我编写了一个函数,它接受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()
。它将按名称引用您的目录!