Q在 MacOS 上尝试使用 diskutil



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);

相关内容

  • 没有找到相关文章

最新更新