我想只读取子目录和指向子目录的链接。 使用以下代码,我阅读了所有子目录和链接。
struct dirent* de;
DIR* dir = opendir(c_str());
if (!dir) { /* error handling */ }
while (NULL != (de = readdir(dir))) {
if (de->d_type != DT_DIR && de->d_type != DT_LNK)
continue;
// Do something with subdirectory
}
但是如何检查链接是否也指向子目录?我不想读取整个链接目录来执行此操作。
答案 0 :(得分:3)
您可以使用stat
中名为<sys/stat.h>
的函数:
struct dirent* de;
struct stat s;
DIR* dir = opendir(c_str());
if (!dir) { /* error handling */ }
while (NULL != (de = readdir(dir))) {
if (de->d_type != DT_DIR) {
char filename[256];
sprintf(filename, "%s/%s", c_str(), de->d_name);
if (stat(filename, &s) < 0)
continue;
if (!S_ISDIR(s.st_mode))
continue;
}
// Do something with subdirectory
}