Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Декабрь 01, 2011, 14:39



Название: Вопрос по QProcess
Отправлено: merke от Декабрь 01, 2011, 14:39
Всем привет.

Есть прога, которая запускает дочерние процессы. Родительская прога консольная, если в консоли нажать ctrl+c, основная программа завершается, а вот дочерние процессы, запущенные ею остаются висеть в процеcсах.

Платформа: Винда XP

Вот код:

Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QProcess>
#include <QFile>
#include <QSharedPointer>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   QProcess *process = new QProcess;
 
   process->start("C:\\dmaster.exe");
 
   return a.exec();
}
 



Название: Re: Вопрос по QProcess
Отправлено: ddrtn от Декабрь 01, 2011, 14:42
Код:
connect(qApp, SIGNAL(aboutQuit()), proc, SLOT(kill()));


Название: Re: Вопрос по QProcess
Отправлено: LisandreL от Декабрь 01, 2011, 14:43
А желаемое поведение какое?


Название: Re: Вопрос по QProcess
Отправлено: merke от Декабрь 01, 2011, 14:51
Надо чтобы все дочерние процессы тоже выгружались.

Кстати вот это не срабатывает:

QObject::connect(qApp, SIGNAL(aboutToQuit()), process, SLOT(kill()));


Название: Re: Вопрос по QProcess
Отправлено: ddrtn от Декабрь 01, 2011, 14:53
можно попробывать вместо kill terminate


Название: Re: Вопрос по QProcess
Отправлено: merke от Декабрь 01, 2011, 14:55
Попробовал, не получается. Если бы это было гуишное приложение, тогда без проблем, а вот в консольном такие вот проблемы(


Название: Re: Вопрос по QProcess
Отправлено: merke от Декабрь 01, 2011, 15:40
Уже думаю писать чтоли свой сборщик "мусора"...


Название: Re: Вопрос по QProcess
Отправлено: Igors от Декабрь 01, 2011, 18:49
Если запускаемые приложения Ваши, то можно вставить в них проверку "жив ли запустивший" (напр 1 раз в секунду) и если нет - вываливаться (exit)

Если из "запустившего", то мочить с помощью ::TerminateProcess (WinAPI)