0

QProcess でコマンドラインを実行したい:

  QString elf_path=C:\\files\\file.elf;
  QString appli = "readelf.exe -a "+elf_path+" >>C:\\work\\essai.txt";
  QProcess *process = new QProcess();
  process->execute(appli);

しかし、QTはこのエラーを表示します:

 readelf: Error: '>>C:\work\essai.txt': No such file

手伝って頂けますか ?

4

3 に答える 3

0

QProcess::execute は静的メソッドです。あなたのケースでは QProcess のインスタンスを作成しないでください。次のコードを試す

const QString path2exe = "readelf.exe";
QStringList commandline;
commandline << "-a";
commandline << elfPath;
commandline << "c:\\work\\essai.txt"
QProcess::execute( path2exe, commandline );
于 2013-06-26T08:53:17.133 に答える
0

コマンドラインで複数のファイルを処理できるreadelfため、リダイレクトを別のファイルとして見ているようです。readelf

したがって、Qtプロセスは期待どおりにリダイレクトを処理していません。

ある種のシェル内では、リダイレクトは標準入出力 (および場合によっては他のもの) をセットアップするために使用され、その後、実行可能プログラムから見えるコマンド ラインから削除されます。言い換えれば、実行可能ファイルは通常リダイレクトを認識せず、シェルが何らかのファイルに接続した標準出力に出力するだけです。

これを修正するには、リダイレクトを理解するcmdプロセスを実行readelfする (コマンドをパラメーターとして渡す) か、メソッドのようなものを使用QProcess::readAllStandardOutput()して、一時ファイルに書き込む代わりに出力をバイト配列に取得する必要があります。

于 2013-06-26T08:53:54.113 に答える