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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess: управление процессами  (Прочитано 5784 раз)
0...-5
Гость
« : Декабрь 19, 2011, 07:12 »

Пишу два приложения: одно рассчитывает данные и записывает результаты расчетов в файл. Второе считывает данные из файла и занимается визуализацией. Встала задача после записи результатов в файл автоматически запускать программу визуализации. Решил использовать QProcess (раньше с этим классом не работал никогда). Возможны 2 ситуации: если визуализатор не запущен, то файл с данными можно передать через аргументы для запуска приложения. А что делать, если приложение уже запущено? Есть ли механизм, с помощью которого можно было бы передать визуализутору строку, содержащую имя файла и заставить его этот файл прочитать?
Всем спасибо!
Записан
ddrtn
Гость
« Ответ #1 : Декабрь 19, 2011, 08:07 »

Можно общаться с другим приложением через сокеты (не беру во внимание платформозависимое межпроцессное взаимодействие) по тсп через локал сокет. QProcess оставить для контроля работы процесса. Удобная штука для работы через сокеты JSON Rpc в библиотечке Qxt
Записан
0...-5
Гость
« Ответ #2 : Декабрь 19, 2011, 08:24 »

Можно общаться с другим приложением через сокеты (не беру во внимание платформозависимое межпроцессное взаимодействие) по тсп через локал сокет. QProcess оставить для контроля работы процесса. Удобная штука для работы через сокеты JSON Rpc в библиотечке Qxt

Честно говоря, не хотелось бы добавлять в проект работу с сетью...Благодаря Вам нашел класс QxtRpcService. Заинтриговала фраза "If all you want is a quick and easy solution to connect two Qt programs, QxtRpcService is for you." Нет какого-нибудь примера / опыта работы с ним, а то поиск молчит...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 19, 2011, 12:18 »

Недавно решал похожую задачу
http://www.prog.org.ru/index.php?topic=20018.msg135524#msg135524

Есть ли механизм, с помощью которого можно было бы передать визуализутору строку, содержащую имя файла и заставить его этот файл прочитать?
У меня приложение через определенный интервал времени проверяет не появился ли новый файл.

Средства обмена данными (между приложениями) могут быть разными, но "синхронизироваться" придется
« Последнее редактирование: Декабрь 19, 2011, 12:20 от Igors » Записан
ddrtn
Гость
« Ответ #4 : Декабрь 19, 2011, 13:16 »

по поводу QxtRPCService.
В связываемых приложениях создаются объекты QxtRPCService, связанные с одним и тем же QIODevice.
Далее прицепляются к ним сигналы и слоты любых объектов с помощью attachSignal и attachSlot.
Связующим звеном тут выступает rpcFunction.
Например, в первом приложении некоторый объект o1 вызывает сигнал readFile(QString fileName). Во втором приложении некоторый объект o2 имеет слот  readFile(QString fileName). Для того, чтобы вызвать слот объекта o2 из объекта o1 нужно в первом приложении сделать
Код:
rpcService->attachSignal(o1, SIGNAL(readFile(QString)), "readFile_QString");
а во втором
Код:
rpcService->attachSlot("readFile_QString",o2, SLOTreadFile(QString)));

Теоретически в качестве связующего QIODevice можно использовать и, например, файл. Но я не пробовал.
На мой взгляд тут лучше QLocalSocket
Записан
0...-5
Гость
« Ответ #5 : Декабрь 19, 2011, 14:08 »

Всем большое спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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