Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如果我重用QProcess变量,stdout/stderr通道中是否会有剩余数据?_Qt - Fatal编程技术网

Qt 如果我重用QProcess变量,stdout/stderr通道中是否会有剩余数据?

Qt 如果我重用QProcess变量,stdout/stderr通道中是否会有剩余数据?,qt,Qt,我有以下情况: QProcess*p; // later p->start(); //later p->terminate(); // there might be unread data in stdout //later p->start(); 我读了过程标准。在我第二次调用p->start()之后,第一个p->start()的标准输出缓冲区中是否仍有未读数据?那对我来说是个问题。我需要刷新缓冲区还是别的什么吗?好的,我已经检查了来源。QProcess::start()

我有以下情况:

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

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

好的,我已经检查了来源。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();
void QProcess::start(常量QString和程序、常量QString和参数、OpenMode模式)
{
Q_D(QProcess);
如果(d->processState!=未运行){
qWarning(“QProcess::start:进程已在运行”);
返回;
}
#如果定义了QPROCESS\u调试

qDebug()我真的不知道,需要检查源代码,但我不明白您为什么要这样做。只需创建一个新的QProcess。它不会造成任何伤害,并且可以保护您免受可能的bug的影响。