crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Еще раз про QProcess, идеология применения
pwp2008
  опции профиля:
сообщение 21.12.2014, 9:55
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 19.12.2014
Пользователь №: 4299

Спасибо сказали: 0 раз(а)




Репутация:   0  


Для контроля наличия в сети , скажем, второго сервера можно периодически применять внешнюю
команду системы через QProcess. Как будет правильней и идеологически и практически :
1. Создать экземпляр класса QProcess и установить connect к нему при инициализации основной формы приложения, а применение его (start и прочее) выполнять с этим экземпляром по необходимости, возможно значительное количество раз , или
2. Каждый раз создавать новый экземпляр и connect, реализовать его и получать данные, далее все снова.
По мне первый вариант должен меньше грузить систему, однако нужно решить проблему с stderr и stdout, чтобы не шло их накопление.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 22.12.2014, 20:26
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Второй вариант гораздо менее уязвим к ошибкам программиста. Он не будет грузить больше систему(оверхед на создание объекта невелик). С первым вариантом гораздо больше проблем, потому что автоматически создается разделяемое состояние, которое надо будет учитывать/анализировать/очищать при перезапуске. Проще выкинуть весь объект.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
pwp2008
  опции профиля:
сообщение 23.12.2014, 19:03
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 19.12.2014
Пользователь №: 4299

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 22.12.2014, 20:26) *
Второй вариант гораздо менее уязвим к ошибкам программиста. Он не будет грузить больше систему(оверхед на создание объекта невелик). С первым вариантом гораздо больше проблем, потому что автоматически создается разделяемое состояние, которое надо будет учитывать/анализировать/очищать при перезапуске. Проще выкинуть весь объект.

А предыдущий объект уйдет автоматом, как только я снова поставлю : m_process = new QProcess(this); ?
Там ведь еще и connect к нему имеется. Или он тоже автоматом исчезнет на новом объекте? В целом, ясно. Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 23.12.2014, 20:08
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


m_process->deleteLater();
m_process = new QProcess(this);

Как обычно все.

Соединение слотов-сигналов само разорвется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 11:32