4

QProcess から次のステートメントを実行する必要があります。

programm < file1 > file2

QTで:

QProcess *proc = new QProcess;
proc->setReadChannelMode(QProcess::SeparateChannels);
proc->start("program < \"file1\" > \"file2\"", QIODevice::ReadWrite);

しかし、どういうわけかうまくいきません。タスク マネージャーでコマンドが正しく表示されていることがわかりますが、プログラムは引数なしで実行されているようです。私のエラーはどこですか?

4

1 に答える 1

8

<それぞれを使用したファイルからの読み取りとファイルへの書き込み>は、シェルの構文機能です。programm < file1 > file2のようなシェルを使用してコマンド ラインを実行するshと、コマンドprogramは実行されるだけで、引数はまったくありません。指定されたファイルへの入力および出力用のプログラム チャネルの割り当ては、コマンド自体とは関係ありません。

ただし、QProcess次の方法を使用して、この動作をシミュレートするように指示できます。

QProcess::setStandardInputFile(QString fileName) QProcess::setStandardOutputFile(QString fileName)

したがって、コードは次のようになります。

QProcess *proc = new QProcess;
proc->setReadChannelMode(QProcess::SeparateChannels);
proc->setStandardInputFile("file1");
proc->setStandardOutputFile("file2");
proc->start("program");
于 2012-06-25T19:18:02.543 に答える