親プロセス書き込み文字列"Message\n"
を子プロセスstdinに書き込みます。しかし子プロセスはそれを受け取っていません。コードのどこに問題がありますか?子プロセスstdinは親プロセスによって送信されたデータを取得しません。
のQt 4.7.3
親プロセスコード:
// class TestParent : public QMainWindow
void TestParent::createChildProcess()
{
childProcess = new QProcess(this);
connect(childProcess, SIGNAL(started()),
this, SLOT(childProcessStarted()));
connect(childProcess, SIGNAL(bytesWritten(qint64)),
this, SLOT(bytesWritten(qint64)));
childProcess->start("TestChild.exe", QProcess::ReadWrite);
}
void TestParent::writeToChildProcessOutput()
{
qint64 bytesWritten = childProcess->write("Message\n");
qDebug() << "ret: " << bytesWritten << " bytes written";
}
void TestParent::bytesWritten()
{
qDebug() << "slot: " << bytesWritten << " bytes written";
}
子プロセスコード:
// class TestChild : public QMainWindow
void TestChild::TestChild()
// QFile TestChild::input;
connect(&input, SIGNAL(readyRead()),
this, SLOT(readInput()));
input.open(0, QIODevice::ReadOnly); // stdin
}
void TestChild::readInput()
{
QString line;
line.append('(');
line.append(QString::number(input.bytesAvailable()))
line.append(')');
line.append(input.readAll());
list.append(line); // add line to QListView
}
されていますTestChild a QProcess?入力はQIODeviceであり、サブクラスではありませんか? – Chris
@Chris:いいえ、TestChild - 子プロセスのメインウィンドウオブジェクトです。親プロセスでは、 'childProcess'オブジェクトを使って子プロセスを作成します。私の間違い: 'input'はQFileです、ありがとうございます。 –