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盘路径重定向到指定文件