【问题标题】:how to print all the subfolders inside a folder c++ under ubuntu [closed]如何在ubuntu下打印文件夹c ++中的所有子文件夹[关闭]
【发布时间】:2012-02-23 18:21:47
【问题描述】:

我是 C++/ubuntu 的新手。我有以下情况:我希望每 2 秒读取一次文件夹中的所有文件(子文件夹)并将它们打印在屏幕上。如果每个子文件夹都有文件,我也想打印这些文件。在我的情况下,我只能拥有一个带有包含文件的子文件夹的文件夹。 例如:文件夹 primary-> subfolder 1 with: name.txt, age.txh;带有 name.txt、age.txt.等的子文件夹 2。我还想指定我不知道子文件夹的总数,因为它会动态增加或减少。

  1. 如何创建一个 2 秒的线程来打印子文件夹中的文件。
  2. 如何打印子文件夹中的文件?

有人可以打印一个 c++ 代码示例吗?谢谢!非常感谢!

【问题讨论】:

  • 你为什么要 C++ 做这个?不能使用ls -R
  • 请注意Stack Overflow 不是免费的编码服务。

标签: c++ file ubuntu directory


【解决方案1】:

如果这只是你正在拼凑的一些玩具,你可能会适合:

watch --interval=2 ls -laR

while true ; do sleep 2 ; ls -laR ; done

如果您真的有兴趣将其编写为应用程序,更好的方法是使用nftw(3) 定期遍历所有目录和文件。向nftw(3) 提供文件和目录所需的例程,并让其他人完成所有艰苦的工作。

最好的方法是使用inotify(7) 接口监视目录和所有子目录更改文件系统。这避免了频繁重新读取在更新之间不会更改的目录和文件元数据。这种方法需要的磁盘带宽和 CPU 显着减少。缺点是inotify(7) 是特定于 Linux 的,并且有最大数量的可用手表。 (我当前系统上的 524288;它可以通过/proc/sys/fs/inotify/max_user_watches 进行调整,因此它可能会更高或更低,具体取决于本地配置和inotify(7) 的其他系统使用。)

【讨论】:

  • 如何使用inotify监控子文件夹?
  • 您为每个子文件夹附加一个新的inotify(7) 手表。
  • ls 不工作。接收权限被拒绝
  • 显然您确实需要权限才能读取和遍历目录。你有这些权限吗?
猜你喜欢
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 2021-09-16
相关资源
最近更新 更多