Почему я никогда не получаю сигнал readyRead / readyReadStandardOutput / readyReadStandardError при выполнении следующего? я получаю все выходные данные в консоли. я работаю с приложением Qt4.8 для вызова дочернего процесса в lubuntu 16.04 64bit. Эта проблема беспокоила меня в течение длительного времени. работал отлично.
заголовочный файл главного окна:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QProcess>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QProcess* process;
private slots:
void on_pushButton_clicked();
void OnRead();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
источник основного окна:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>
#include <QDebug>
MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
process = new QProcess(this);
bool result = connect(process, SIGNAL(readyRead()), SLOT(OnRead()));
qDebug() << result;
connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(OnRead()));
connect(process, SIGNAL(readyReadStandardError()), this, SLOT(OnRead()));
process->setProcessChannelMode(QProcess::ForwardedChannels);
process->start("/home/albert/test");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
}
void MainWindow::OnRead()
{
qDebug() << "can read";
}
тестовый код здесь:
#include <sys/timerfd.h>
#include <time.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h> /* Definition of uint64_t */
#include <iostream>
int main(int argc, char* argv[])
{
while (1) {
std::cout << "hello world!0";
printf("hello world!\n");
fprintf(stderr, "hello world error!\n");
fflush(stdout);
sleep(1);
}
return 0;
}