如何检查QProcess是否正确执行? [英] How to check if QProcess is executing correctly?

查看:152
本文介绍了如何检查QProcess是否正确执行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

QProcess process_sdcompare;
QString command_sdcompare;
QStringList args_sdcompare;

command_sdcompare = "diff";
args_sdcompare << "Filename" << "Filename";

process_sdcompare.start(command_sdcompare,args_sdcompare,QIODevice::ReadOnly);
process_sdcompare.waitForFinished();                                        
QString StdOut_sdcompare = process_sdcompare.readAllStandardOutput(); //Reads standard output
QString StdError_sdcompare = process_sdcompare.readAllStandardError(); //Reads standard error

if(StdOut_sdcompare.isEmpty())  //the process output is checked here if empty it is a success
    return 1;

我正在运行上面的代码.当我比较不相似的文本文件后检查错误情况时, isEmpty()返回 false .

I am running the above code. When I check for an error condition after comparing not similar text files, isEmpty() returns false.

如何检查 QProcess 执行是否没有错误?

How do I check if the QProcess execution occurred without errors?

推荐答案

我使用 QProcess :: error()来查询最后一个错误(用于快速调试),但是使用了更精细"的方法做到这一点:

I use QProcess::error() to query the last error (for quick debugging), however a "nicer" way to do it:

// capture any errors (do this before you run the process)
connect(&process_sdcompare, &QProcess::errorOccurred, this, &ThisClass::processError);

然后定义插槽:

ThisClass::processError(QProcess::ProcessError error)
{
    qDebug() << "error enum val = " << error << endl;
}

更新

或使用Lambda:

// No need to define a slot function...
connect(&process_sdcompare, &QProcess::errorOccurred, [=](QProcess::ProcessError error) 
{ 
    qDebug() << "error enum val = " << error << endl; 
});

这篇关于如何检查QProcess是否正确执行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆