如何在 Qt 中获取 Linux 上 USB 驱动器的路径?
Posted
技术标签:
【中文标题】如何在 Qt 中获取 Linux 上 USB 驱动器的路径?【英文标题】:How to get path to USB drive on Linux in Qt? 【发布时间】:2016-10-14 05:10:17 【问题描述】:我已经用 Qt 成功编译了 libusb,现在可以在 USB 设备连接和断开连接时接收事件。
现在我需要获取目录的路径。这在 Windows 下似乎相当容易,因为我可以根据Qt documentation 使用QDir::drives()
。
因此对于 Windows,这将返回 C:\ 、 F:\ 等,我可以轻松地写入这些位置。
但是在 Linux 上,我只有USB PID and VID,我不知道如何获得 USB 根目录的工作路径。我需要使用QFile
在那里写一些文件
是否有通用的跨平台解决方案?
【问题讨论】:
请注意,在 Linux 上,USB 驱动器可能不会自动挂载! 我的回答中的解决方案可以解决这个问题 - 只需致电QStorageInfo::isValid()
doc.qt.io/qt-5/qstorageinfo.html#isValid
【参考方案1】:
我发现这段代码完全可以满足我的需要:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes())
qDebug() << storage.rootPath();
if (storage.isReadOnly())
qDebug() << "isReadOnly:" << storage.isReadOnly();
qDebug() << "name:" << storage.name();
qDebug() << "fileSystemType:" << storage.fileSystemType();
qDebug() << "size:" << storage.bytesTotal()/1000/1000 << "MB";
qDebug() << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB";
输出:
"/run"
name: ""
fileSystemType: "tmpfs"
size: 6748 MB
availableSize: 6729 MB
"/"
name: ""
fileSystemType: "ext4"
size: 64370 MB
availableSize: 22236 MB
"/run/lock"
name: ""
fileSystemType: "tmpfs"
size: 5 MB
availableSize: 5 MB
"/home"
name: ""
fileSystemType: "ext4"
size: 183169 MB
availableSize: 27305 MB
"/run/user/1000"
name: ""
fileSystemType: "tmpfs"
size: 6748 MB
availableSize: 6748 MB
"/media/superuser/Backups"
name: "Backups"
fileSystemType: "ext4"
size: 252113 MB
availableSize: 133173 MB
"/media/superuser/Data"
name: "Data"
fileSystemType: "ext4"
size: 732123 MB
availableSize: 694298 MB
"/media/superuser/BackupWD"
name: "BackupWD"
fileSystemType: "fuseblk"
size: 209713 MB
availableSize: 13144 MB
"/media/superuser/WDSpace"
name: "WDSpace"
fileSystemType: "fuseblk"
size: 790484 MB
availableSize: 582583 MB
【讨论】:
以上是关于如何在 Qt 中获取 Linux 上 USB 驱动器的路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux 下的 C 中确定 USB 存储(USB 闪存驱动器)“设备路径”