【发布时间】:2015-02-27 15:46:37
【问题描述】:
可以通过多个路径访问同一个文件系统条目。
- 真正的完整路径 - /home/user/dir1/file1
- 包含父目录的路径 - /home/user/dir1/../dir1/file1
- 带有直接符号链接的路径 - /home/user/dir1/symlink_to_file1
- 带有间接符号链接的路径 - /home/user/symlink_to_dir1/file1
- ...
我想要两个编写一个函数,对于给定的两个路径,它将判断第二个路径指定的文件或目录是否在第一个路径指定的目录内(包括子目录)。
我认为最明显的解决方案是找到两个文件系统条目的真实完整路径,然后检查第一个真实路径是否是第二个的前缀。这就是为什么问题的标题是关于寻找真正的完整路径。
注意:我想为 Windows 和 POSIX 兼容系统编写函数。
注意:boost::filesystem 不能使用。
【问题讨论】:
-
你考虑过硬链接吗?我认为在 Linux 中目录(或文件)只有一个“真实名称”的想法是没有意义的。
-
它在 Windows 中也没有什么意义。但是,在典型的 Windows 安装中,没有包含多个目录条目(硬链接)的文件。
标签: c++ c path cross-platform