如何在Linux中找到文件系统中的循环?我正在索引所有文件以便快速搜索(O(1))...我正在使用c编程语言来实现dir.h中的库函数....我可以扫描整个文件系统但它进入一个循环,如果文件系统中有循环(示例循环安装)...如何在文件系统中找到循环..我已经看到当文件系统中有循环时updatedb命令报告...我不明白逻辑...任何人都可以帮忙找到解决方案吗?
阻止在图中重新扫描节点的一般方法是在传递节点时标记节点,然后忽略标记的节点.如果您不想修改要扫描的图形,这不是非常实用,因此您需要一种在外部标记节点的方法.我能想到在linux下执行此操作的最简单方法是为您访问的每个目录存储device/inode.然后,当您查看目录时,首先检查您是否还没有看到具有相同设备/ inode的任何目录.这不仅可以处理循环,还可以处理彼此合并的树.
要获取device/inode编号,请查看stat/fstat函数以及stat结构的st_dev和st_ino成员.
对于存储数据,您可能希望查看哈希表或二叉树.