【发布时间】:2018-07-17 09:35:13
【问题描述】:
我在 SO 以及互联网上的任何地方都阅读了很多类似的问题,但我找不到解决方案。
我有以下要运行的命令:
c:\\lscc\\Programmer\\3.8_x64\\bin\\nt64\\pgrcmd.exe -infile test.xcf
从 CMD 窗口我有这样的标准输出:
Lattice Programmer Diamond(64 位)3.8.0.115.3 命令行参数 检查 - OK Loading Programmer Device Database... 完成。写日志 文件到 /programmer.log 打开 XCF 文件... 完成。编程 XCF 内容... 连接到 Lattice Cable 服务器。失败。
我想通过 QProcess 在我的应用程序中运行它,但我找不到获得相同输出的方法。 我有以下代码,命令已执行,但我无法获得任何输出:
process = QProcess()
process.setProcessChannelMode(QProcess.MergedChannels)
process.start("c:\\lscc\\Programmer\\3.8_x64\\bin\\nt64\\pgrcmd.exe -infile test.xcf")
process.waitForFinished()
> process.readAllStandardError() = b" # empty
> process.readAllStandardOutput() = b" # empty
> process.exitCode() = -9
只有有用的东西在errorString中:
> process.errorString() = "Unknown error"
【问题讨论】:
-
试试:
process.start("c:\\lscc\\Programmer\\3.8_x64\\bin\\nt64\\pgrcmd.exe", ["-infile" "test.xcf"]) -
@eyllanesc 我的天,真的吗?有用!我什至没有尝试过,因为 Qt doc 说这两种方法都应该做同样的工作。问题是他们为什么不这样做。
-
QProcess 需要区分程序及其参数。
-
我已经发布了一个答案,请标记为正确