我需要编写一个程序,该程序从用户获取根目录和最小文件大小,然后计算所有大于用户在所有子目录中输入的大小的文件。
由于某种原因,我的递归只计算当前工作目录中的文件,而不计算子目录中的文件。关于如何解决这个问题的任何线索?它正确计算工作目录中的文件数。
答案 0 :(得分:0)
递归调用函数时,需要正确指定路径。 dentry->d_name
仅指文件名;它不包含它所属的目录名。
否则,它将尝试递归到可能不存在的目录中。 (或者,如果有一个名称与父目录相同的目录,将尝试无限地递归到同一目录中。)
char path[PATH_MAX];
....
snprintf(path, sizeof path, "%s/%s", fileName, dentry->d_name);
countFiles(path, count, size);