如何重定向 QProcess StandardOutput

问题描述

我正在使用 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中,没有办法改变第二个进程 飞行途中,或者。