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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос по qprocess  (Прочитано 3477 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Октябрь 15, 2015, 10:28 »

Здравствуйте вопрос по QProcess
смысл в том что мне для тестирования сервера нужно много раз запустить клиент
собственно программа она должна запустить 10 раз клиент
проблема в том что если я использую:
1)execute- код блокируется
2)startDetached-- происходит запуск всех процессов в цикле но после закрытия программы процессы все виснут в системе(утечка)
3)start-- пишет QProcess: Destroyed while process is still running.

Код
C++ (Qt)
#include <QCoreApplication>
#include <QProcess>
#include <QFile>
 
 
int main(int argc, char *argv[])
{
 
   for (int i=0;i<10;i++)
   {
       QString kom="/potokklient/build-potokklien-Desktop-Debug/potokklien";
       QProcess vec;
       vec.start(kom);
 
   }
   exit(0);
}
мне нужно как я понял сделать start чтобы все дочерние процессы после завершения данного кода удались но не получается...
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Октябрь 15, 2015, 11:40 »

Имхо, на каждый запуск нужен отдельный экземпляр QProcess
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Октябрь 15, 2015, 11:42 »

А ещё у вас программа завершается раньше, чем завершаются процессы. См. QProcess::waitForFinished.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #3 : Октябрь 15, 2015, 11:44 »

Имхо, на каждый запуск нужен отдельный экземпляр QProcess
На каждый запуск и создается отдельный экземпляр. Но проблема в том, что это создается на стеке и при потере видимости (а это будет на следующем шаге цикла) произойдет разрушение QProcess.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #4 : Октябрь 15, 2015, 12:57 »

что такое "клиент" - другая отдельная программа ?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Октябрь 15, 2015, 13:07 »

Дык расширьте область видимости QProcess и не давайте программе завершиться, пока все процессы не отработают.
Код
C++ (Qt)
QProcess vec[10];
for(int i = 0; i < 10; ++i){
   QString kom="/potokklient/build-potokklien-Desktop-Debug/potokklien";
   vec[i].start(kom);
}
for(int i = 0; i < 10; ++i){
   vec[i].waitForFinished(100500);
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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