重用 QProcess 对象 (Qt 4.8)
Posted
技术标签:
【中文标题】重用 QProcess 对象 (Qt 4.8)【英文标题】:Reusing a QProcess object (Qt 4.8) 【发布时间】:2015-08-01 09:18:52 【问题描述】:给定以下代码:
QProcess myProcess;
myProcess.setProcessChannelMode(QProcess::ForwardedChannels);
myProcess.start(/* whatever */);
myProcess.closeWriteChannel();
// More code, like waitForStarted() and other specifics.
myProcess.start(/* whatever */); // Line (1)
第(1)行之后,新进程的标准输入通道是打开还是关闭?我的意思是,QProcess 是否会记住您对每个新抛出的进程的选择,还是每次都必须设置它们?在这种情况下,哪些 QProcess 属性会重置,哪些不会?
【问题讨论】:
启动是异步的,如果要确保启动完成(或失败),调用waitForStarted()。我会考虑为每个进程运行创建一个新的 QProcess 对象。 也许我应该在问题中提到这一点,但是在“//更多代码”注释下的代码中省略了您的考虑。 好的,我已经提到过了。你是第二个警告我的人。 【参考方案1】:myProcess.start(/* whatever */); // Line (1)
您应该在第 (1) 行收到“QProcess::start: Process is already running”警告......
【讨论】:
假设在“//更多代码”中有一个waitForFinished()
调用。
@Peregring-lk :据我所知,每次都必须设置 QProcess...即使您可以交叉检查qDebug()<<myProcess.isOpen();
以确保...以上是关于重用 QProcess 对象 (Qt 4.8)的主要内容,如果未能解决你的问题,请参考以下文章
在 Qt 中获取输出:'QProcess::start()' 和 'QProcess:readAllStandardOutPut()'