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)它返回大量信息,例如:
。
智能状态:已验证
体积 UUID: 954BACF1-EBC5-4D14-86FB-0912CF7F839C
磁盘/分区 UUID: 954BACF1-EBC5-4D14-86FB-0912CF7F839C
磁盘大小:500.1 GB(500068036608 字节)(正好976695384 512 字节单位)
....
当我尝试添加 qDebug() 进行调试时,我得到以下结果:true - "找不到磁盘:$(df -h/|尾巴 -1 |cut -d' ' -f 1)"
所以看起来参数没有格式化还是什么?
我正在尝试实现:https://apple.stackexchange.com/questions/50302/how-can-i-tell-which-volume-the-operating-system-is-on
Eelke解释后的轻微修改。
QStringList args;
args << "-c" << "diskutil info $(df -h / | tail -1 | cut -d' ' -f 1)";
p.start("/bin/bash", args);