![]() |
|
|
![]()
|
|
| Mechatronic |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Здравствуйте.
Необходимо для произвольного количества объектов, находящихся в std::list создать по одному QProcess. Эти процессы нужно перезапускать в случае их завершения, а затем, по требованию, все вместе остановить и удалить. То есть, есть некоторая структура
Есть наш метод, который получает список таких структур
И делает с каждой записью в списке что-то вроде:
Подскажите, пожалуйста, как лучше организовать код. Как насоздавать объектов и потом их удалить, вроде ясно - сначала запихиваем все в QSharedPointer'ы, храним в списке, Затем для каждого процесса делаем kill(), удаляем SharedPointer из списка. А как их перезапуск организовать? |
||||||
|
|||||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
||||
|
||||
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Guinness, спасибо большое за отклик. А откуда взять указатель на QProcess, если я от всех процессов сигналы на один слот заведу? Количество процессов ведь не известно заранее.
|
|||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
Я так обычно делаю в таких ситациях.
|
|||
|
||||
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Guinness, спасибо большое.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Mechatronic, а ты, случаем, не изобретаешь Qt Concurrent ?
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
borisbn, пока что, вроде, не изобретаю. Qt Concurent же про многопоточность, а мне внешние процессы надо. То, что я пишу, наверное, можно назвать фронт-ендом к неким консольным утилитам.
Но за ссылку огромное спасибо. О существовании таких инструментов я еще не знал =) |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Mechatronic, пардон. Не досмотрел. Думал у тебя QThread.
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Можно создать вспомогательный класс для каждого процесса:
Это сообщение отредактировал(а) math64 - 14.11.2014, 08:36 |
|||
|
||||
| Mechatronic |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Соединил все finished() сигналы на один слот onFinished(), в котором вызываю
bool stop; - переменная, устанавливаемая перед удалением всех процессов (чтобы они после остановки не перезапускались сразу же). Храню в QList< QSharedPointer<QProcess> >. Для остановки по очереди извлекаю элементы, останавливаю. Примерно так:
Пока что устраивает. Всем спасибо за подсказки Это сообщение отредактировал(а) Mechatronic - 14.11.2014, 10:00 |
||||
|
|||||
| Mechatronic |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Возник дополнитерьный вопрос. Если приложение не успело вывести большой объем текста и его остановить, то QProcess::readall() не выдает вообще ничего. После длительной работы выдает все или почти все, что вывело приложение в стандартный поток. Это только у меня так?
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |