c++ QT4 アプリケーションが Linux コマンドから結果を読み取るように強制する必要があります。私は Qprocess を使用しようとしていますが、コマンドが複雑になるとすぐに、何らかの形で混乱し (推測だけ)、機能しません。
ここで私はあなたのために小さな例を作ろうとします:
QProcess process;
command = "ls -l | grep a | sort";
qDebug() << "Execute command -> "+command;
process.start( command );
process.waitForFinished(-1);
QString processStdout = process.readAllStandardOutput();
QString processStderr = process.readAllStandardError();
qDebug() << "Std out -> "+processStdout;
qDebug() << "Std err -> "+processStderr;
これは印刷されます:
Execute command -> ls -l | grep a | sort
"Std out -> "
"Std err -> ls: |: No such file or directory
while をコンソールから実行すると、ファイル名が正しく出力されます。
コマンドをもっと単純なものに置き換えると、スムーズに command = "ls -l";
動作します。エラーは、OS によって標準エラーで返されます。
したがって、コマンドに使用される Qstring が何らかの形で操作されると思います。何が起こっているかについて何か考えはありますか?