电脑技术学习

UNIX 文件系统基本操作

dn001

  在 while 循环的底部,读取另一个目录条目并对其进行处理。如果您完成了对目录条目的处理,那么关闭当前打开的目录,并返回经过处理的条目的数目。

  清单 6. 读取另一个条目

    retval = readdir_r( dir, &entry, &entryPtr );
  }
  
  /* Close the Directory and return the number of entrIEs. */
  (void)closedir( dir );
  return count;
}

  最后,清单 7 显示了该程序的 main() 函数,它只是对命令行中传递的每个参数调用了 process_directory() 函数。一个真正的程序应该具有使用方法消息,并且在用户没有指定任何参数时,提供某种形式的反馈信息,但我把这项内容作为练习留给读者。

  清单 7. 主线

/* readdir_demo main()
*
* Run through the specified directories, and pass them
* to process_directory().
*/
int main( int argc, char **argv )
{
  int idx = 0;
  unsigned count = 0;
  
  for( idx = 1; idx < argc; idx++ ) {
    count += process_directory( argv[idx] );
  }
  
  return EXIT_SUCCESS;
}

  这就是整个程序。尽管包含了较多的文件,但处理目录条目并不是十分困难。

  结束语

  使用 readdir() 和 stat() 函数浏览目录中的条目并确定对其进行的额外处理,是非常简单的,在您需要列举目录中的内容时,也可能会使用到这种处理方法。它是一种很实用的方法,但是对于一些没有经验的 Unix 开发人员来说,却难以掌握。本文的目的是降低其难度,使得 UNIX 开发人员能够充分利用这些有价值的函数。

标签: