2012-02-01 176 views
-5

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

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

有人可以打印一个c + +代码的例子吗?谢谢!赞赏很多!

+0

为什么你要C++来做到这一点?不能使用'ls -R'? – Pubby 2012-02-01 01:42:04

+5

请注意[SO]不是免费的编码服务。 – sarnold 2012-02-01 01:42:54

+0

我需要一个c代码或C++ – user1165435 2012-02-01 06:21:30

回答

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))。

+0

如何使用inotify监控sufolders? – user1165435 2012-02-01 06:03:39

+0

您为每个子文件夹附加一个新的'inotify(7)'手表。 – sarnold 2012-02-01 08:14:55

+0

ls不工作。收到拒绝的权限 – user1165435 2012-02-03 06:40:46

相关问题