Есть процесс, представляющий из себя программу (на перле) которая получает данные на stdin, обрабатывает их и сразу же выдает их в stdout. Мне нужно, отправляя данные в процесс, сразу же получать от него результат (из его stdout). Сам процесс работает четко, сто процентов, он проверен, и данные отправляет в stdout, но, сигнала QProcess::newData() не возникает и даже когда я пытаюсь получить вручную без сигнала данные по QProcess::readLine() или по QProcess::readAllStandardOutput или же просто QIODevice::readAll() получаю болт вместо данных. Ни сигнал QProcess::newData() не появляется, ни ручной вызов читающих методов не дает никаких данных. Но данные вываливаются из QProcess в стопицотую попытку отправить в процесс данные, только тогда появляется единый сигнал QProcess::newData(), а за тем опять простой. Я так понял что есть какая-то буферизация. Я пробовал мешать режим открытия процесса с QIODevice::Unbuffered, но все равно не помогло.
QProcess striptask;
connect( &stripTask, SIGNAL( readyRead() ), SLOT( newData() )
void SqlStripForm::newData(void) //Подсоединенный слот
{
//Тут либо такой код
while( stripTask.canReadLine() ) {
plainTextEdit_2->appendPlainText( stripTask.readLine() );
}
//либо такой
plainTextEdit_2->appendPlainText( stripTask.readAllStandardOutput() );
}