我正在编写一个利用inotify监视文件访问的守护程序,因此在递归搜索中不要遗漏任何内容至关重要。我找到了this interesting idea并已开始实现它。
ftw()和ftw64()不使用广度优先算法,而是更“预定”的。 nftw()为我提供了深度优先的选项,但我担心上叶的种族。
我希望我缺少什么,也许是GNU扩展?还是我只是在考虑使用类型安全的回叫实现我自己的事情(我真的不愿意这样做)?
或者,对于这种类型的应用程序,我是否理解错误的广度优先于深度优先的优势?
最佳答案
查看“nftw()”的规范,FTW_DEPTH标志进行后置(深度优先)遍历,在访问目录节点之前先访问子目录。
我不认为任何标准算法都可以进行广度优先搜索。
大概,您应该基于nftw()接口(interface)编写一个bfftw()。请注意,在进行扫描时,必须将要递归访问的项目(目录)排队。
关于c - 是否有任何POSIX函数或glibc扩展实现了广度优先的文件树遍历?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1647572/