C深度优先搜索-如何处理可用的文件指针不足?

问题描述

如果我递归搜索目录并输入所有子目录,我该如何处理深度不超过可用文件指针不足并退出程序的操作(没有分段错误等)?

解决方法

从根本上来说,您有一个排队问题,因此您可能应该使用队列来解决。您拥有受保护的资源-可以一次打开的fds数量;因此,您要以q的一开始-您正在遍历的树的根。 遍历树时,当您发现遇到目录时,将一个具有该名称的项目放在队列中。完成目录后,从队列中取出一个项目并重复上述顺序。

如果变得聪明,则可以有多个线程从此队列中删除项目,并并行处理树。当然,您必须安排以某种合理的方式订购输出。但是请记住,如果只能打开N个fds,则只能在目录中移动M