は、実施例として、このコードを参照してください:
bool Utility::untarScript(QString filename, QString& statusMessages)
{
// Untar tar-bzip2 file, only extract script to temp-folder
QProcess tar;
QStringList arguments;
arguments << "-xvjf";
arguments << filename;
arguments << "-C";
arguments << QDir::tempPath();
arguments << "--strip-components=1";
arguments << "--wildcards";
arguments << "*/folder.*";
// tar -xjf $file -C $tmpDir --strip-components=1 --wildcards
tar.start("tar", arguments);
// Wait for tar to finish
if (tar.waitForFinished(10000) == true)
{
if (tar.exitCode() == 0)
{
statusMessages.append(tar.readAllStandardError());
return true;
}
}
statusMessages.append(tar.readAllStandardError());
statusMessages.append(tar.readAllStandardOutput());
statusMessages.append(QString("Exitcode = %1\n").arg(tar.exitCode()));
return false;
}
それはあなたが分析するために利用可能なすべてのプロセス出力を収集します。特にreadAllStandardError()を見てください。
"私のアプリケーションでは、これらのタイプのエラーを区別する必要があります。"つまり、必要な処理をしない外部ユーティリティを呼び出す代わりに、プログラムでsshとscpを実装する必要があるでしょう。あなたがそれらの2にのみ関心がある場合は、あなたが他のQtのクラスにscpコマンドを呼び出す前に、アクセス権やネットワークアクセスをチェックするために仕事ができる – Kenster
: 権限qfileにより::パーミッション() QNetworkAccessManager :: networkAccessible() –
私は2番目の@Kensterとlibsshまたはlibssh2の使用をお勧めします。 scpのためだけにQtラッパーを書くのは難しくありません。 – sirop