readdir_sample.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. *
  9. */
  10. /*
  11. * 程序清单:读取目录
  12. *
  13. * 程序会创建一个操作文件的函数并导出到msh命令列表
  14. * 在函数中调用 readdir() 函数
  15. * struct dirent* readdir(DIR *d);
  16. * readdir()函数用来读取目录,参数d 为目录路径名。
  17. * 返回值为读到的目录项结构,如果返回值为RT_NULL,则表示已经读到目录尾;
  18. * 此外,每读取一次目录,目录流的指针位置将自动往后递推1 个位置。
  19. */
  20. #include <rtthread.h>
  21. #if RT_VER_NUM >= 0x40100
  22. #include <fcntl.h> /* 当需要使用文件操作时,需要包含这个头文件 */
  23. #else
  24. #include <dfs_posix.h>
  25. #endif /*RT_VER_NUM >= 0x40100*/
  26. static void readdir_sample(void)
  27. {
  28. DIR *dirp;
  29. struct dirent *d;
  30. /* 打开/dir_test 目录*/
  31. dirp = opendir("/dir_test");
  32. if (dirp == RT_NULL)
  33. {
  34. rt_kprintf("open directory error!\n");
  35. }
  36. else
  37. {
  38. /* 读取目录*/
  39. while ((d = readdir(dirp)) != RT_NULL)
  40. {
  41. rt_kprintf("found %s\n", d->d_name);
  42. }
  43. /* 关闭目录 */
  44. closedir(dirp);
  45. }
  46. }
  47. /* 导出到 msh 命令列表中 */
  48. MSH_CMD_EXPORT(readdir_sample, readdir sample);