Добрый день!
Необходимо, чтобы родительский процесс запускал дочерний(QProcess), который пишет в stdout и при этом должен транслироваться это в консоль родительского.
Сейчас сделал примерно так:
Создал класс ExternalExecuter
class ExternalExecuter : public QObject
{
Q_OBJECT
public:
ExternalExecuter(const QString& command);
~ExternalExecuter();
QProcess* process();
private slots:
void writeOutputData();
private:
QProcess ::) *_process;
};
определил у него сигнал\слот для связки с выводом от дочернего(_process)
ExternalExecuter::ExternalExecuter(const QString& command) :
_process(new DetachedProcess) {
QObject::connect(_process, SIGNAL(readyReadStandardOutput()),
this, SLOT(writeOutputData()));
_process->setReadChannel(QProcess::StandardOutput);
_process->start(command);
}
где writeOutputData - слот:
void ExternalExecuter::writeOutputData() {
QByteArray array;
array = _process->readAllStandardOutput();
std::cout << array.data();
}
Где надо создать дочерний процесс создаю объект ExternalExecuter и передаю в него необходимые параметры.
После создания вызываю в цикле
process()->waitForFinished()
тем самым данные из дочернего транслируются.
Но загвоздка в том, что необходимо завершить родительский процесс, а дочерний должен все так же продолжать писать. Какие возможны варианты решения? Пока нашел только WinAPI
CreateProcess