首先认识一个linux的命令
在终端输入lsblk时会得到如下结果
其中sdc1是我插入的U盘,在有操作系统且正常运行的情况下,使用centos时U盘是会自动挂载到/media这个路径下的。
注意:在使用ubuntu和centos时的路径有些不同,ubuntu好像是自动加载到/run/media路径
然后我们运行这条命令
lsblk|grep media|grep part|grep -o -E ‘/.*’
得到的结果是这样的
其中第一个grep是得到包含media的部分,第二个grep是得到包含part的部分,第三个grep是精确匹配以 “/” 开头后面有若干字符的部分。
到这里我们的准备工作就完成了,即:一个有系统且已经登录的linux(未登录的话不会自动加载,因为/media后面的root就是当前登录的用户),以及这一条指令。
在QT中需要使用这样的方式使用bash并接收返回值:
首先在.h文件中声明 :QProcess piTerminal;
要加入头文件: #include <QProcess>
piTerminal.start("sh",QStringList()<<"-c"<<"lsblk|grep media|grep part|grep -o -E '/.*'");piTerminal.waitForFinished();QString ret=piTerminal.readAllStandardOutput();QStringList list=ret.split("\n");if(list.size()!=1){int i =0;for(i=0;i<list.size();i++){qDebug()<<list.at(i);//输出U盘的绝对路径}}if(list.size()==1){qDebug()<<"未检测到U盘插入,请插入后重试";}
这时就可以检测并输出这些U盘的位置了。
注意:如果没有操作系统,是必须要手动执行mount选择位置进行挂载的!
可以这样进行查看,一般U盘都有LABEL值
命令 lsblk -aflp