1. ホーム
  2. c++

[解決済み] QProcessが正しく実行されているかどうかを確認する方法を教えてください。

2022-02-02 07:01:55

質問

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 .

を確認するには、どうすればよいのでしょうか? QProcess はエラーなく実行されましたか?

解決方法は?

私は QProcess::error() を使用して、最後のエラーをクエリすることができます(迅速なデバッグのため)。

// 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;
}

更新

ラムダを使うことも。

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