4

我想cp -R使用 POSIX 递归地将一个目录复制到另一个目录(如 )scandir()

问题是当我复制像 /sys/bus/ 这样的目录时,其中包含指向更高级别的链接(例如: foo/foo1/foo2/foo/foo1/foo2/foo/... )系统进入循环状态并永远复制“中间”的目录......

如何检查我用 dirent 打开的文件是否是链接?

4

1 回答 1

1

看这个:如何检查两个文件名是否指向同一个物理文件

您需要存储您访问过的 inode 列表,以确保没有任何重复项。如果您有两个指向同一个文件的硬链接,则没有“一个”规范名称。一种可能性是首先存储所有文件,然后递归所有文件名。您可以将路径结构与 inode 和文件内容分开存储。

于 2012-05-22T07:40:38.553 回答