Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想cp -R使用 POSIX 递归地将一个目录复制到另一个目录(如 )scandir()。
cp -R
scandir()
问题是当我复制像 /sys/bus/ 这样的目录时,其中包含指向更高级别的链接(例如: foo/foo1/foo2/foo/foo1/foo2/foo/... )系统进入循环状态并永远复制“中间”的目录......
如何检查我用 dirent 打开的文件是否是链接?
看这个:如何检查两个文件名是否指向同一个物理文件
您需要存储您访问过的 inode 列表,以确保没有任何重复项。如果您有两个指向同一个文件的硬链接,则没有“一个”规范名称。一种可能性是首先存储所有文件,然后递归所有文件名。您可以将路径结构与 inode 和文件内容分开存储。