微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

boost :: filesystem:path检测到两个路径共享同一物理驱动器

如何解决boost :: filesystem:path检测到两个路径共享同一物理驱动器

背景

我有一些复杂的应用程序,可能会占用大量磁盘空间(〜10TB)。为了防止由于光盘已满而引起的异常错误,我的应用程序具有一些逻辑来管理已存储的数据。

当前在Windows平台上运行,但已移植到Linux。

问题

两种数据可能存储在不同的物理驱动器上。根据该业务逻辑有些不同。现在,在Windows上,物理驱动器可以通过boost::filesystem::path::root_path()进行标识(这并不完美,但在我的方案中已经足够了),但是在其他平台上,此逻辑却分崩离析,因为root_path()总是empty()

问题

我正在寻找一些多平台解决方案(最好是增压)来检测两条路径是否共享同一物理驱动器。
如果没有这种情况,我将不得不使用平台特定的API,而我宁愿避免这种情况。

解决方法

我认为您最好的选择是退后一步,重新考虑您的方法:

如果您的操作系统和文件系统支持它,请尝试creating a hard link。现在,您可以相对可靠地知道它们是否是相同的文件系统。 (不幸的是,使用网络文件系统之类的方法仍然可以避免OS知道文件系统确实相同。)

即使对于吞吐量而言很有趣,并且可能需要操作系统特定的处理,知道最后是否是同一块硬盘对于防止在其上塞满废话似乎毫无意义。

如果您知道路径应该相同,则创建测试文件可以避免任何有缺陷的模拟,而只是让系统为您解决。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?