我在一侧有文件路径,而我想要复制它们的新路径。
如何测试它们是否可以简单地链接或是否应该被复制?
答案 0 :(得分:4)
第1步:致电link。
步骤2:如果在errno
设置为EXDEV
的情况下返回-1,则复制。
[更新]
一般来说,没有便携(可靠)的方式来回答这个问题。我认为,您最接近的是致电statvfs获取来源和目的地,然后比较statvfs structures的f_fsid
字段。
不幸的是,POSIX并不保证f_fsid
字段的任何特别之处。这个测试应该适用于Linux,除非您可能会询问NFS挂载的文件系统......
答案 1 :(得分:1)
Nemo's answer确实是最简单的解决方案:尝试link(2)
系统调用。
如果您只是想知道路径是否可以硬链接而不尝试link(2)
系统调用,您可以找到他们的文件系统,例如使用statfs(2),检查它们是否在同一个文件系统上,并检查文件系统的类型是否足够好。