/**
* 扫描一个目录
*/
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
static void list_files(const char *dir_path)
{
DIR *ptr_dir = NULL;
struct dirent *ptr_dirent = NULL;
ptr_dir = opendir(dir_path);
if (NULL == dir_path)
{
printf("opendir %s failed.\n", dir_path);
return;
}
while (1)
{
errno = 0;
ptr_dirent = readdir(ptr_dir);
if (NULL == ptr_dirent)
{
break;
}
/* 跳过"."和".."目录 */
if (strcmp(ptr_dirent->d_name, ".") == 0 || strcmp(ptr_dirent->d_name, "..") == 0)
{
continue;
}
printf("%s/%s\n", dir_path, ptr_dirent->d_name);
}
if (errno != 0)
{
printf("readdir error, errno=%d.\n", errno);
}
closedir(ptr_dir);
return;
}
int main(int argc, char *argv[])
{
/* 输入参数检查&提示 */
if ((argc > 1) && (0 == strcmp(argv[1], "--help")))
{
printf("%s [dir...]\n", argv[0]);
return -1;
}
if (argc == 1)
{
list_files(".");
}
else
{
for (argv++; *argv != NULL; argv++)
{
list_files(*argv);
}
}
return 0;
}
参考资料
- Linux/UNIX系统编程手册(上册)