26

次のコードを使用して、QProcess から出力を取得しようと考えていました。

// Start the process
process.start(tr("php-cgi www/test.php"),QIODevice::ReadWrite);

// Wait for it to start
if(!process.waitForStarted())
    return 0;

// Continue reading the data until EOF reached
QByteArray data;

while(process.waitForReadyRead())
    data.append(process.readAll());

// Output the data
qDebug(data.data());
qDebug("Done!");

私が期待しているのは、プログラムからの出力がデバッグコンソールに表示されることですが、表示されるのは次のとおりです。

終わり!

そんなこと知ってる:

  • 最後にメッセージが出力されるので、プログラムは正常に開始されます。
  • 端末でまったく同じコマンドを実行すると、期待どおりに長いテキスト文字列が生成されるため、プログラム出力を出力します。

ここで何が間違っていますか?

4

2 に答える 2

29

プロセス呼び出しを開始する前に:

process.setProcessChannelMode(QProcess::MergedChannels);

これにより、すべて (STDERR 出力も含む) が STDOUT 出力に出力されます。

于 2010-10-04T09:33:20.653 に答える