Родительский процесс записывает строку "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
}
Is TestChild QProcess? и ввод - это QIODevice, а не подкласс? – Chris
@Chris: Нет, TestChild - главный оконный объект дочернего процесса. В родительском процессе мы создаем дочерний, используя объект childProcess. Моя ошибка: 'input' - QFile, спасибо. –