readdir_sample.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. #include <dfs_posix.h> /* 当需要使用文件操作时,需要包含这个头文件 */
  22. static void readdir_sample(void)
  23. {
  24. DIR *dirp;
  25. struct dirent *d;
  26. /* 打开/dir_test 目录*/
  27. dirp = opendir("/dir_test");
  28. if (dirp == RT_NULL)
  29. {
  30. rt_kprintf("open directory error!\n");
  31. }
  32. else
  33. {
  34. /* 读取目录*/
  35. while ((d = readdir(dirp)) != RT_NULL)
  36. {
  37. rt_kprintf("found %s\n", d->d_name);
  38. }
  39. /* 关闭目录 */
  40. closedir(dirp);
  41. }
  42. }
  43. /* 导出到 msh 命令列表中 */
  44. MSH_CMD_EXPORT(readdir_sample, readdir sample);