Russian Qt Forum
Сентябрь 30, 2024, 20:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание дочернего процесса  (Прочитано 2307 раз)
deaks
Гость
« : Июль 30, 2012, 15:48 »

Добрый день!

Необходимо, чтобы родительский процесс запускал дочерний(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
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.108 секунд. Запросов: 21.