Qt 5.12
我正在尝试在macOS上获取卷ID,并使用以下功能:
QString getVolumeInfo()
{
QString volumeID = "Cannot find the volumeID";
QProcess p;
//diskutil info $(df -h / | tail -1 | cut -d' ' -f 1)
QString command = "diskutil";
QStringList args;
args << "info" << "$(df -h / | tail -1 | cut -d' ' -f 1)";
p.start(command, args);
p.waitForStarted();
p.waitForFinished();
foreach(QString line, QString(p.readAll()).split("\n"))
{
if(line.contains("Volume UUID:"))
volumeID = line;
}
return volumeID;
}
由于macOS的限制,我必须使用diskutil。但是,QProcess读取对象时没有任何内容。
终端上的命令: diskutil info $(df -h / | tail -1 | cut -d''-f 1) 返回大量信息,例如:
...
SMART状态:已验证
卷UUID:954BACF1-EBC5-4D14-86FB-0912CF7F839C
磁盘/分区UUID:954BACF1-EBC5-4D14-86FB-0912CF7F839C
磁盘大小:500.1 GB(500068036608字节)(恰好976695384 512字节单位)
....
当我尝试添加qDebug()进行调试时,得到以下信息:true-“找不到磁盘:$(df -h / | tail -1 | cut -d''-f 1)\ n” < / p>
所以参数似乎没有格式化或什么?
答案 0 :(得分:0)
在Eelke解释后进行了轻微修改。
QStringList args;
args << "-c" << "diskutil info $(df -h / | tail -1 | cut -d' ' -f 1)";
p.start("/bin/bash", args);