Linux:如何确定是否已删除已安装的vfat卷?

时间:2014-10-23 19:01:00

标签: linux mount

我有一个系统(在CentOS 6.3下运行),它喜欢将数据存档到闪存驱动器。

我们有一个UI,只在用户尝试存档数据时尝试安装驱动器 - 用户选择存档功能,然后安装驱动器(如果有)并检查它的统计信息。如果它不好(例如驱动器小于数据集),我们会提示用户尝试另一个驱动器。

现在,我正在处理的是我不想继续卸载和重新安装音量,所以我只是把它挂了。但是,当用户将其拔出时,我不知道如何告诉它已经消失了!

我有一个循环轮询驱动器,我正在查看像statvfs64()这样的东西(它继续表现就好像驱动器在那里)。当驱动器被物理移除时,stat()也不会发生变化。

我尝试了一个打开的目录(opendir())并从中读取,但这也没有失败(如果驱动器上有任何文件,那些不再显示,但当然,开始时驱动器可能是空的,所以我不能这样做。

我不想反复卸载并重新安装驱动器,因为用户可能已插入类似NTFS驱动器的东西,这似乎需要一些时间来安装。

mount可能是只读的,因此尝试写入有问题的文件系统不是我能做的。

到目前为止,我唯一能想到的是我可以检查安装设备并查看它是否仍然存在(当我拉动闪存键时,/ dev / sd *条目消失了)。在我看来,有一个更好的方法来做到这一点,但我还没有能够弄明白。

2 个答案:

答案 0 :(得分:0)

即使/ dev / sd *存在,这并不意味着驱动器已安装,只存在于系统上。也许你可以尝试解析/ proc / mounts文件,看看你是否在那里找到它。

答案 1 :(得分:0)

好的,我最终做的是定期检查设备是否仍然存在。所以,如果我在/ mnt / usbdrive上安装了/ dev / sdb1,我会定期检查/ dev / sdb1是否仍然存在。如果没有,我会卸下并回去看。

这不是最佳选择,但它确实有效,因此它是我现在能做的最好的事情,特别是对于空驱动器的只读安装。