python-3.x - 如何重定向 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”对象吗?
解决方案
在将其报告为Qt错误跟踪器上的错误之后。
我收到以下回复:
这是 Qt 的一个限制,
QProcess::setStandardOutputProcess(Qprocess *destination)
需要一个非空指针;它并不意味着在运行时更改。
我对这个问题的解决方法是使用process1.setStandardOutputProcess(QProcess())
.
编辑
我问是否有解决方法并收到以下回复
有推荐的解决方法吗?
他回答
不可以。它的设计不允许更改设备(因为很可能涉及到 I/O 缓冲区)。同样,当做类似的事情时
ls -l | fgrep "bla"
在 shell 中,也无法在飞行途中更改第二个进程。
推荐阅读
- javascript - 如何修复“加载资源失败:操作无法完成。iOS 12 视频中的“协议错误”?
- mysql - MySQL Query 跨越 40,000 行 v/s 一次加载和 for 循环
- karate - 如何在空手道中上传多个包含多部分的文件
- python - 如何编写 Django 查询并在 WHERE 子句中包含 PostGres 函数 (current_time)?
- ios - 适用于 Unity 的 iOS 插件,带有导航以添加新联系人
- swift - 我的代码无法在 iPhone 上运行“退出代码 1 失败”错误消息
- r - 如何根据另一个单选按钮输入将单选按钮插入闪亮的 UI?
- git - 为什么 PowerShell 似乎不支持 $env:path 变量?
- java - 如何使 Vertx MongoClient 操作同步但不阻塞 Java 中的事件循环?
- vue.js - 如何在 Vue 中将 v-model 与功能模板组件一起使用?