QProcess на MacOS пытается использовать diskutil - PullRequest
0 голосов
/ 23 января 2019

Qt 5.12

Я пытаюсь получить идентификатор тома в macOS и использую следующую функцию:

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

Мне нужно использовать diskutil из-за ограничения с macOS.Тем не менее, QProcess, считывающий объект, не содержит ничего.

Команда на терминале: информация о диске $ (df -h / | tail -1 | cut -d '' -f 1) который возвращает тонну информации, например:

...

SMART-статус: проверено

Том UUID: 954BACF1-EBC5-4D14-86FB-0912CF7F839C

UUID диска / раздела: 954BACF1-EBC5-4D14-86FB-0912CF7F839C

Размер диска: 500,1 ГБ (500068036608 байт) (ровно 976695384 512-байтовых единиц)

....

Когда я пытаюсь добавить qDebug () для отладки, я получаю следующее: true - "Не удалось найти диск: $ (df -h / | tail -1 | cut -d '' -f 1) \ n"

Похоже, аргументы не отформатированы или что-то в этом роде?

Я пытаюсь реализовать: https://apple.stackexchange.com/questions/50302/how-can-i-tell-which-volume-the-operating-system-is-on

1 Ответ

0 голосов
/ 24 января 2019

Небольшая модификация после объяснения Эльки.

QStringList args;
args << "-c" << "diskutil info $(df -h / | tail -1 | cut -d' ' -f 1)";
p.start("/bin/bash", args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...