首页 > 解决方案 > 如何重定向 QProcess 标准输出

问题描述

我正在使用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())
有效,但这是重新划分的正确方法吗?或者我是在创建一个新的“uneccessry”对象吗?

标签: python-3.xqtpyqt5pyside2qprocess

解决方案


在将其报告为Qt错误跟踪器上的错误之后。

我收到以下回复:

这是 Qt 的一个限制, QProcess::setStandardOutputProcess(Qprocess *destination)需要一个非空指针;它并不意味着在运行时更改。

我对这个问题的解决方法是使用process1.setStandardOutputProcess(QProcess()).

编辑
我问是否有解决方法并收到以下回复

有推荐的解决方法吗?

他回答

不可以。它的设计不允许更改设备(因为很可能涉及到 I/O 缓冲区)。同样,当做类似的事情时

ls -l | fgrep "bla"

在 shell 中,也无法在飞行途中更改第二个进程。


推荐阅读