确定链接指向的目录条目的类型

时间:2016-01-22 10:33:57

标签: c linux

我想只读取子目录和指向子目录的链接。 使用以下代码,我阅读了所有子目录和链接。

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
 }

但是如何检查链接是否也指向子目录?我不想读取整个链接目录来执行此操作。

1 个答案:

答案 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
}