递归c文件列表_ stat()函数对于dir中的文件失败

时间:2011-06-28 18:18:54

标签: c

C中,以递归方式遍历LINUX环境中的文件和目录 我的函数foo有效,除非该目录中包含文件(我的函数IS指向列出当前DIR的所有文件)。

以来,它不会打印任何目录中的文件
if((err=stat(full_child_entity_path,childStat)) <0)

失败。我好几天都遇到了这个问题。任何人都可以尝试解释为什么这个功能 失败了?

注意:我拥有所有文件和目录的完全访问权限,文件/目录拥有完全权限。

先谢谢!

int foo(char* dir_location)
{

  if((err=stat(full_child_entity_path,childStat)) <0)  
  {
    printf("Some sort of error with getting file stat %d <%s>\n",err,childDirent->d_name);
  }
  opendir()
  while {readdir()!=null}
    if(strcmp(childDirent->d_name,".")==0 || strcmp(childDirent->d_name,"..")==0) continue;

    if(S_ISREG(childStat->st_mode)) printf("name of file");
    else if(S_ISDIR(childStat->st_mode)) foo("concatinate dir_location+"/"+childDirent->name);
}

1 个答案:

答案 0 :(得分:1)

我认为这是因为你忽略了函数readdir()的返回值(除了空值检查)。它实际上会返回您稍后引用的孩子dirent。其次,您还会忽略opendir()的返回值,它会为您提供成功调用readdir(...)的目录。