gpt4 book ai didi

qt - 如果我重用 QProcess 变量,stdout/stderr channel 中是否会有剩余数据?

转载 作者:行者123 更新时间:2023-12-04 08:06:46 25 4
gpt4 key购买 nike

我有以下场景:

QProcess*p;
// later
p->start();
//later
p->terminate(); // there might be unread data in stdout
//later
p->start();

我阅读了流程标准输出。在我第二次调用 p->start() 之后,第一个 p->start() 的 stdout 缓冲区中是否还有未读数据?那对我来说是个问题。我需要刷新缓冲区还是什么?

最佳答案

好的,我已经检查了来源。 QProcess::start() 方法明确清除两个输出缓冲区,所以应该没问题,至少在这个意义上:

void QProcess::start(const QString &program, const QStringList &arguments, OpenMode mode)
{
Q_D(QProcess);
if (d->processState != NotRunning) {
qWarning("QProcess::start: Process is already running");
return;
}

#if defined QPROCESS_DEBUG
qDebug() << "QProcess::start(" << program << "," << arguments << "," << mode << ")";
#endif

d->outputReadBuffer.clear();
d->errorReadBuffer.clear();

不过,我仍然认为重用同一个对象是一种糟糕的风格。

关于qt - 如果我重用 QProcess 变量,stdout/stderr channel 中是否会有剩余数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com