2014-11-02 117 views
0

我需要编写一个程序,该程序从用户处获取根目录和最小文件大小,然后计算大于用户在所有子目录中输入的大小的所有文件。递归计数

出于某种原因,我的递归只计算当前工作目录中的文件,而不计入子目录中的文件。任何线索如何解决这个问题?它正确地计算工作目录中的文件数量。

+1

对于闹意,把一个符号连接到一个包含目录到一个(子)目录中。 – Deduplicator 2014-11-02 02:24:21

回答

0

当您递归调用函数时,您需要正确指定路径。 dentry->d_name仅引用文件名;它不包含它所属的目录名称。

否则,它会尝试缓存到可能不存在的目录中。 (或者,如果有一个名称与父目录相同的目录,它将尝试无限递归到同一个目录中)。

char path[PATH_MAX]; 

.... 

snprintf(path, sizeof path, "%s/%s", fileName, dentry->d_name); 
countFiles(path, count, size);