问题描述
我正在使用 QProcess
的两个实例。在我的代码的某些部分,我需要 process1
将其输出重定向到 process2
。
通过遵循 Qt 文档,我可以使用 QProcess.setStandardOutput()
,这很棒。但是,稍后我必须在代码中禁用它。
如何将其输出重定向到默认行为 (stdout)?我试过 process1 = QProcess()
,但没有用。
process1 = QProcess()
process2 = QProcess()
process1.setStandardOutputProcess(process2)
process1.start("command1")
process2.start("command2")
process1.setStandardOutputProcess(QProcess())
有效,但这是重新划分的正确方法吗?还是我创建了一个新的“不必要的”对象?
解决方法
在 Qt 错误跟踪器上将此报告为错误后。
我收到了以下回复:
这是Qt的限制,
QProcess::setStandardOutputProcess(Qprocess *destination)
期望
非空指针;它不应在运行时更改。
我解决此问题的方法是使用 process1.setStandardOutputProcess(QProcess())
。
编辑
我问是否有解决方法并收到以下回复
有推荐的解决方法吗?
他回复了
没有。它的设计不允许更改设备 (因为很可能涉及 I/O 缓冲区)。 同样,当做类似
ls -l | fgrep "bla"
在shell中,没有办法改变第二个进程 飞行途中,或者。