使用scandir()时打开每个文件,但不要打开指向其他目录的链接

使用scandir()时打开每个文件,但不要打开指向其他目录的链接,c,loops,copy,scandir,C,Loops,Copy,Scandir,我想使用POSIX递归地将一个目录复制到另一个目录(如cp-R) 问题是,当我复制像/sys/bus/这样的目录时,它包含指向更高级别的链接(例如:foo/foo1/foo2/foo/foo1/foo2/foo/…),系统将进入循环状态并永久复制“中间”目录 如何检查用dirent打开的文件是否为链接?请看以下内容: 您需要存储您访问过的inode列表,以确保不会获得任何重复项。如果您有两个指向同一文件的硬链接,则没有“一个”规范名称。一种可能是首先存储所有文件,然后递归所有文件名。可以将路径结

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

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

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

请看以下内容:


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

我试过使用S_ISLINK,但不起作用-黑色27。看到了吗,你是想停在符号链接上,还是想避免循环?现在回答我已经很晚了,但我只想说你解决了我的问题!非常感谢你!