【发布时间】:2019-01-24 15:18:17
【问题描述】:
我使用下面的代码从命令行实用程序的标准输出中捕获“帮助”。这段代码一直没有问题,直到今天早上有人遇到问题(出现的消息框显示该命令看起来很奇怪)。
我似乎无法重现该问题,因此我将其归结为系统异常,因为该实用程序位于网络共享驱动器上,并且我们的系统承载着安全进程,这会导致很多滞后。
添加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");
}
【问题讨论】:
-
那是真正的代码吗?字符串文字中的单个反斜杠启动转义序列。您确定有问题的命令在命令行中仍能按预期工作吗?
-
不是真正的代码。无法复制真实代码。我会解决的。
-
是的,该命令确实有效,这部分代码在过去几年中一直是这样工作的。