linux会将usb设备挂载在media下,逻辑就是先查看所有挂载,将挂载里面含有media的路径保存到一个文件里,再去文件里读取u盘路径
查找对应的shell 指令为 : cat /proc/mounts | cut -d ' ' -f 2 | grep \"media\"
该指令为先查找 所有挂载.然后将查找的第二个字段截取出来,再在里面筛选 media字段
然后将查找到的u盘路径 写到某个文件里
全部函数如下:
QString setplay::GetDownload_USB_path()
{
QString usb_path,tmp;
redirect_system("cat /proc/mounts | cut -d ' ' -f 2 | grep \"media\"","/root/tmp_usb_name");
QFile file("/root/tmp_usb_name"); //---打开文件
if (file.open(QIODevice :: ReadWrite)) // 以只读的方式打开
{
char cBuf[128];
qint64 LineLen = file.readLine(cBuf, sizeof(cBuf)); //---读取文本文件的一行
if (-1 != LineLen) //---读取成功,将返回读取的字节,读取失败,将返回-1
{
qDebug() << cBuf; //--输出读取的文本文件内容
usb_path = QString(cBuf);
int length=usb_path.length();
tmp = usb_path.left(length-1);//实际读出来的U盘名称总是多一个空格在右边。
QString qinfo;
qinfo=QString("tmp=%1,usb_path=%2").arg(tmp).arg(usb_path);
LOGGER->Log(LOGGER_INFO,"%s",qinfo.toLatin1().data());
}
}
file.flush();
file.close();
system("sudo rm -rf /root/tmp_usb_name");
return tmp;
}
#define CMD_STR_LEN 1024
int redirect_system(char* cmdstring, char* tmpfile)
{
char cmd_string[CMD_STR_LEN];
sprintf(cmd_string, "%s > %s", cmdstring, tmpfile);
return system(cmd_string);
}
第一个函数返回u盘的路径,第二个函数将查出来的u盘路径重定向到指定文件