Я использую приведенный ниже код для получения «справки» из стандартного вывода утилиты командной строки. Этот код работал без проблем до сегодняшнего утра, когда кто-то столкнулся с проблемой (появилось окно сообщения, в котором говорилось, что команда выглядит странно).
Я не могу воспроизвести проблему, поэтому я собираюсь объяснить ее аномалией системы, поскольку утилита находится на сетевом общем диске, и у нас есть системы, которые обременены процессами безопасности, которые вызывают большое отставание.
Было бы полезно добавить waitForReadyRead
чек, или это избыточно?
Любые мысли или предложения будут оценены.
QProcess cmd_process;
cmd_process.setWorkingDirectory("x:/working/directory");
cmd_process.start(R"(t:\bin\win\cmdlineutility.exe)", QStringList() << "/help");
if(cmd_process.waitForFinished())
{
// TODO - should waitForReadyRead() go here?
QByteArray ba = cmd_process.readAll();
if(ba.contains("something good"))
{
// do stuff here
}
else
{
QMessageBox::information(0, "Something wrong", "cmdlineutility looks odd");
}
}
else
{
QMessageBox::information(0, "something wrong", "total fail");
}