Home Articles

QProcess异常QT

Asked
Viewed 475 times
0

我正在开发一个创建并运行另一个Qprocess的应用程序 . 我的代码是:

QProcess myProcess = new QProcess();
connect(myProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(sendProcessCompleted(int,QProcess::ExitStatus)));
connect(myProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(sendProcessError(QProcess::ProcessError)));


myProcess->start(program, arguments);


void SensorSimulator::sendProcessCompleted(int exitError, QProcess::ExitStatus exitStatus)
{
    if(exitStatus == QProcess::CrashExit)
    {
        QString errorMessage("SensorSimulator is unexpectedly crashed.");
        emit ProcessError(errorMessage);
    }
    else
    {
        QString p_stdout = myProcess->readAllStandardOutput();
        QString p_stderr = myProcess->readAllStandardError();
    }

}

void SensorSimulator::sendProcessError(QProcess::ProcessError error)
{

    QString p_stdout = myProcess->readAllStandardOutput();
    QString p_stderr = myProcess->readAllStandardError();
    QString errorMessage;
    errorMessage = "SensorSimulator is unexpectedly crashed. ProcessError: " + error;
    //emit ProcessError(errorMessage);
}

我在p_stdout中得到此异常:

跑步,停止按'S'或关闭窗口 . 发现异常:类型:System.InvalidOperationException消息:当任一应用程序没有控制台或控制台输入已从文件重定向时,无法查看是否已按下某个键 . 试试Console.In.Peek .

有人可以帮忙吗?

编辑:我正在运行的进程是.Net应用程序

1 Answer

  • 1

    这个问题有点具体,但解决方案可能会帮助那些有相同错误信息的人们理解它是什么 .
    我运行的程序使用 Console.KeyAvailable 属性,根据MSDN抛出异常,当进程的输入是重定向输入时:

    InvalidOperationException:标准输入被重定向到文件而不是键盘 .

    当我将其更改为Console.In.Peek时,一切正常 .

Related