需要列出AIX上目录中的所有文件

时间:2017-06-23 23:33:26

标签: aix readdir

有一个程序需要列出AIX上目录中的所有文件。

在Windows上成功完成此操作: -

hFind = FindFirstFile(szDir, &ffd);

 if (hFind == INVALID_HANDLE_VALUE)
 {
   fprintf(stderr,"Can not scan for files.\n");
   goto MOD_EXIT;   
 }

 do
 {
   if (! (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
   {
     printf("File:%s\n",ffd.cFileName);
   }
 }
 while (FindNextFile(hFind, &ffd) != 0);

在Linux上: -

d = opendir(szDir);
if (!d)
{
  fprintf(stderr,"Can not open directory '%s'.\n",szDir);
  goto MOD_EXIT;    
}

while(dir = readdir(d))
{
  if (dir->d_type != DT_DIR)
  {
    printf("File:%s\n",dir->d_name);
  }
}
closedir(d);

readdir似乎存在于AIX上,但是从手册中可以看出它只返回目录而不是文件。 d_type结构中不存在字段dirent

1 个答案:

答案 0 :(得分:1)

readdir()引用目录条目时,它表示目录中的条目,而不是目录的子目录。所以你可以从那里得到所有的名字。

要发现它们是文件还是目录,便携/可靠的方法是stat()结果。有标准的宏来测试stat缓冲区中返回的st_mode(例如S_ISDIR